Junior — Middle
Qual é a principal diferença entre uma classe abstrata e uma interface na programação orientada a objetos?
sobes.tech IA
Resposta da IA
A principal diferença entre uma classe abstrata e uma interface é que a classe abstrata pode conter implementação de métodos e estado (campos), enquanto a interface apenas define as assinaturas dos métodos sem implementação (até C# 8.0). A classe abstrata é usada quando se deseja estabelecer uma implementação base e funcionalidade comum para os herdeiros, enquanto a interface serve para definir um contrato que as classes devem cumprir, independentemente da sua hierarquia.
Exemplo:
// Classe abstrata
public abstract class Animal {
public void Eat() {
Console.WriteLine("Comendo");
}
public abstract void MakeSound();
}
// Interface
public interface IMovable {
void Move();
}
// Classe que herda de uma classe abstrata e implementa uma interface
public class Dog : Animal, IMovable {
public override void MakeSound() {
Console.WriteLine("Latido");
}
public void Move() {
Console.WriteLine("Correr");
}
}