Sobes.tech
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");
    }
}