Junior — Middle
Ποια είναι η κύρια διαφορά μεταξύ μιας αφηρημένης κλάσης και μιας διεπαφής στον αντικειμενοστραφή προγραμματισμό;
sobes.tech AI
Απάντηση από AI
Η βασική διαφορά μεταξύ μιας αφηρημένης κλάσης και μιας διεπαφής είναι ότι η αφηρημένη κλάση μπορεί να περιέχει υλοποιήσεις μεθόδων και κατάσταση (πεδία), ενώ η διεπαφή ορίζει μόνο τις υπογραφές των μεθόδων χωρίς υλοποίηση (μέχρι το C# 8.0). Η αφηρημένη κλάση χρησιμοποιείται όταν πρέπει να ορίσετε μια βασική υλοποίηση και κοινή λειτουργικότητα για τους κληρονόμους, ενώ η διεπαφή για τον ορισμό ενός συμβολαίου που πρέπει να υλοποιήσουν οι κλάσεις, ανεξάρτητα από την ιεραρχία τους.
Παράδειγμα:
// Αφηρημένη κλάση
public abstract class Animal {
public void Eat() {
Console.WriteLine("Τρώει");
}
public abstract void MakeSound();
}
// Διεπαφή
public interface IMovable {
void Move();
}
// Κλάση που κληρονομεί από την αφηρημένη κλάση και υλοποιεί τη διεπαφή
public class Dog : Animal, IMovable {
public override void MakeSound() {
Console.WriteLine("Γαβγίζει");
}
public void Move() {
Console.WriteLine("Τρέχει");
}
}