Junior — Middle
Qual è la principale differenza tra una classe astratta e un'interfaccia nella programmazione orientata agli oggetti?
sobes.tech AI
Risposta dell'AI
La principale differenza tra una classe astratta e un'interfaccia è che la classe astratta può contenere implementazioni di metodi e stato (campi), mentre l'interfaccia definisce solo le firme dei metodi senza implementazione (fino a C# 8.0). La classe astratta viene utilizzata quando si desidera impostare un'implementazione di base e funzionalità comuni per gli eredi, mentre l'interfaccia serve a definire un contratto che le classi devono rispettare, indipendentemente dalla loro gerarchia.
Esempio:
// Classe astratta
public abstract class Animal {
public void Eat() {
Console.WriteLine("Mangiare");
}
public abstract void MakeSound();
}
// Interfaccia
public interface IMovable {
void Move();
}
// Classe che eredita da una classe astratta e implementa l'interfaccia
public class Dog : Animal, IMovable {
public override void MakeSound() {
Console.WriteLine("Abbaio");
}
public void Move() {
Console.WriteLine("Correre");
}
}