Junior — Middle
Ինչպե՞ս է տարբերվում աբստրակտ դասը ինտերֆեյսից օբյեկտային ծրագրավորման մեջ։
sobes.tech AI
Պատասխան AI-ից
PHP-ում ամփոփ դասը և ինտերֆեյսը ունեն հետևյալ տարբերությունները.
-
Ամփոփ դասը կարող է պարունակել ամփոփ մեթոդներ (անվերացական), ինչպես նաև մեթոդներ with implementation և հատկություններ:
-
Ինտերֆեյսը պարունակում է միայն մեթոդների հայտարարություններ (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 "Ուժեղ";
}
}
Այսպիսով, ամփոփ դասը սահմանում է մասնակի իրականացում, իսկ ինտերֆեյսը — միայն պայմանագիր.