Una classe astratta è una classe che deve essere estesa prima di poter essere utilizzata. Ciò non significa in alcun modo che le funzioni stesse debbano essere astratte.
Prendiamo ad esempio una classe di animali
public abstract class Animal
{
void Move()
{
//whatever
}
}
public class Fish : Animal
{
void Swim()
{
}
}
public class Dog : Animal
{
void Bark()
{
}
}
Tutti gli animali possono muoversi, ma solo i pesci possono nuotare e il cane può abbaiare.
O per un esempio di vita reale. Ho un controller base ASP.net MVC che utilizzo nella mia applicazione. Ha alcuni metodi di base che mi servono molto spesso come GetCurrentUser() e una funzione che ho scritto per aiutare con la localizzazione. Si occupa anche del tracciamento, quindi non devo riscrivere quel codice in tutti i miei controller. La classe ha circa 200 righe di codice ma non un singolo metodo astratto.
Okay, questo significa che possiamo usare una classe astratta come una classe di marcatori per altre classi. –
Sì, in effetti, ma se non è necessaria un'implementazione, è possibile utilizzare invece le interfacce. –