Junior — Middle
Ako sa líši abstraktná trieda od rozhrania v objektovo orientovanom programovaní?
sobes.tech AI
Odpoveď od AI
Abstraktná trieda a rozhranie v PHP majú nasledujúce rozdiely:
-
Abstraktná trieda môže obsahovať abstraktné metódy (bez implementácie), ako aj metódy s implementáciou a vlastnosti.
-
Rozhranie obsahuje iba deklarácie metód (od PHP 8 môžu byť pridané predvolené implementácie, ale je to vlastnosť), neobsahuje stav (vlastnosti).
-
Trieda môže dediť iba od jednej abstraktnej triedy, ale môže implementovať viacero rozhraní.
-
Abstraktná trieda sa používa, keď je potrebné definovať základnú implementáciu a všeobecný kontrakt, zatiaľ čo rozhranie — keď je potrebné definovať iba kontrakt bez implementácie.
Príklad:
abstract class Animal {
abstract public function makeSound();
public function sleep() {
echo "Spí";
}
}
interface CanFly {
public function fly();
}
class Bird extends Animal implements CanFly {
public function makeSound() {
echo "Pípa";
}
public function fly() {
echo "Letí";
}
}
Takto, abstraktná trieda stanoví čiastočnú implementáciu, rozhranie — iba kontrakt.