Sobes.tech
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("Τρέχει");
    }
}