Ποια είναι η διαφορά μεταξύ μιας αφηρημένης κλάσης και μιας διεπαφής στον αντικειμενοστραφή προγραμματισμό;
sobes.tech AI
Απάντηση από AI
Η αφηρημένη κλάση και η διεπαφή σε PHP έχουν τις ακόλουθες διαφορές:
-
Αφηρημένη κλάση μπορεί να περιέχει αφηρημένες μεθόδους (χωρίς υλοποίηση), καθώς και μεθόδους με υλοποίηση και ιδιότητες.
-
Διεπαφή περιέχει μόνο δηλώσεις μεθόδων (από το PHP 8, μπορούν να προστεθούν προεπιλεγμένες υλοποιήσεις, αλλά αυτό είναι μια ιδιαιτερότητα), δεν περιέχει κατάσταση (ιδιότητες).
-
Μια κλάση μπορεί να κληρονομήσει μόνο από μια αφηρημένη κλάση, αλλά μπορεί να υλοποιεί πολλές διεπαφές.
-
Η αφηρημένη κλάση χρησιμοποιείται όταν θέλετε να ορίσετε μια βασική υλοποίηση και μια γενική σύμβαση, ενώ η διεπαφή χρησιμοποιείται όταν θέλετε να ορίσετε μόνο μια σύμβαση χωρίς υλοποίηση.
Παράδειγμα:
abstract class Animal {
abstract public function makeSound();
public function sleep() {
echo "Κοιμάται";
}
}
interface CanFly {
public function fly();
}
class Bird extends Animal implements CanFly {
public function makeSound() {
echo "Τσιρίζω";
}
public function fly() {
echo "Πετάει";
}
}
Έτσι, η αφηρημένη κλάση ορίζει μια μερική υλοποίηση, και η διεπαφή μόνο τη σύμβαση.