Ποια είναι τα διαφορές μεταξύ μιας αφηρημένης κλάσης και μιας διεπαφής στον αντικειμενοστραφή προγραμματισμό;
sobes.tech AI
Απάντηση από AI
Μια αφηρημένη κλάση και μια διεπαφή είναι διαφορετικοί μηχανισμοί για την περιγραφή συμβολαίων και συμπεριφορών στον αντικειμενοστραφή προγραμματισμό, αλλά με βασικές διαφορές:
-
Αφηρημένη κλάση μπορεί να περιέχει τόσο αφηρημένες (χωρίς υλοποίηση) όσο και συγκεκριμένες μεθόδους με υλοποίηση. Μπορεί να έχει κατάσταση (πεδία). Οι κλάσεις κληρονομούν από την αφηρημένη κλάση και μπορούν να υπερισχύσουν μεθόδους.
-
Διεπαφή περιγράφει μόνο ένα σύνολο μεθόδων χωρίς υλοποίηση και δεν περιέχει κατάσταση. Η κλάση που υλοποιεί τη διεπαφή πρέπει να υλοποιήσει όλες τις μεθόδους της.
Παραδείγματα διαφορών:
- Η αφηρημένη κλάση είναι κατάλληλη όταν πρέπει να ορίσετε μια βασική υλοποίηση και κοινή κατάσταση για τους κληρονόμους.
- Η διεπαφή χρησιμοποιείται για την περιγραφή δυνατοτήτων που μπορούν να υλοποιηθούν από διαφορετικές κλάσεις χωρίς σχέση κληρονομιάς.
Για παράδειγμα, η διεπαφή Flyable μπορεί να περιγράφει τη μέθοδο fly(), και η αφηρημένη κλάση Bird μπορεί να περιέχει το πεδίο wingSpan και τη μέθοδο sing() με υλοποίηση.