Junior — Middle
Kā atšķiras abstrakta klase no saskarnes objektorientētajā programmēšanā?
sobes.tech AI
Atbilde no AI
PHP irakstāmā klase un interfeiss ir šādi atšķirīgi:
-
Irakstāmā klase var saturēt abstraktus metodes (bez realizācijas), kā arī metodes ar realizāciju un īpašības.
-
Interfeiss satur tikai metožu deklarācijas (no PHP 8 var pievienot noklusējuma realizāciju, bet tas ir īpašums), tas nesatur stāvokli (īpašības).
-
Viena klase var manto tikai no viena abstrakta klases, bet var realizēt vairākus interfeisus.
-
Irakstāmā klase tiek izmantota, kad nepieciešams noteikt pamata realizāciju un kopēju līgumu, bet interfeiss — kad nepieciešams definēt tikai līgumu bez realizācijas.
Piemērs:
abstract class Animal {
abstract public function makeSound();
public function sleep() {
echo "Guļ";
}
}
interface CanFly {
public function fly();
}
class Bird extends Animal implements CanFly {
public function makeSound() {
echo "Čirš";
}
public function fly() {
echo "Lido";
}
}
Tādējādi, abstraktā klase nosaka daļēju realizāciju, bet interfeiss — tikai līgumu.