Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Uma classe abstrata pode ter implementação além de método abstrato que é definido somente sua assinatura. Confere?

No exercício diz que a resposta correta é "Não possuem corpo (implementação), apenas definem a assinatura.".

Mas isso não seria sobre uma Interface? A diferença entre uma classe Interface e uma Abstrata, não se daria por uma só implementa a assinatura e a outro tu pode implementa métodos?

4 respostas

Oi, Alessandra. Tudo bom?

Assim como em interfaces, em classes abstratas é possível criar métodos abstratos. Exemplo:

abstract class Teste
{
    public abstract void Metodo();
}

Note que métodos abstratos só podem existir em classes abstratas e, por conta disto, não podemos instanciar diretamente um objeto do tipo Teste com algo como Teste referencia = new Teste();! É necessário derivar este tipo e implementar o método:

class ClasseFilha : Teste
{
    public override void Metodo()
    {
        Console.WriteLine("Implementação");
    };
}

O que você acha? Ajudei com sua dúvida?

Oi Guilherme, tudo certo :) Minha pergunta acho que ficou um pouco confusa..

Uma classe Interface eu posso criar somente declaração de método (assinatura), só que uma classe abstrata eu posso criar método declarado (assinatura) como métodos implementados.

Seria isso mesmo?

solução!

Exatamente, seu entendimento está correto :)

Então, só pra reforçar e ser mais formal, na classe abstrata podemos ter métodos com corpo definido public void M() { ... } e métodos abstratos public abstract void M();.

Na interface, não temos exatamente métodos abstratos, apenas a assinatura dos métodos (ou seja, seu nome, tipo de retorno e argumentos) void M();.

:) Muito Obrigada