Middle
Ποια είναι η διαφορά μεταξύ μιας αφηρημένης κλάσης και μιας διεπαφής;
sobes.tech AI
Απάντηση από AI
Αφηρημένη κλάση — είναι μια κλάση που μπορεί να περιέχει τόσο υλοποιημένες μεθόδους όσο και αφηρημένες (χωρίς υλοποίηση). Χρησιμεύει ως βάση για την κληρονομικότητα και μπορεί να περιέχει κατάσταση (πεδία).
Διεπαφή — είναι ένα συμβόλαιο που ορίζει ένα σύνολο μεθόδων χωρίς υλοποίηση (στην κλασική έννοια). Η κλάση που υλοποιεί τη διεπαφή πρέπει να υλοποιήσει όλες τις μεθόδους της.
Βασικές διαφορές:
- Η αφηρημένη κλάση μπορεί να περιέχει υλοποίηση και κατάσταση, η διεπαφή — μόνο υπογραφές μεθόδων (σε ορισμένες γλώσσες, οι διεπαφές μπορούν να περιέχουν προεπιλεγμένες μεθόδους).
- Μια κλάση μπορεί να κληρονομήσει μόνο από μία αφηρημένη κλάση, αλλά μπορεί να υλοποιήσει πολλές διεπαφές.
- Η αφηρημένη κλάση παρέχει μερική υλοποίηση, η διεπαφή — μόνο το συμβόλαιο.
Παράδειγμα σε Java:
abstract class Animal {
void eat() { System.out.println("Τρώει"); }
abstract void sound();
}
interface Flyable {
void fly();
}
class Bird extends Animal implements Flyable {
void sound() { System.out.println("Τσιρίζω"); }
public void fly() { System.out.println("Πετάω"); }
}