Junior — Middle
Чӣ гуна фарқият дорад байни синфи абстрактӣ ва интерфейс дар барномасозии объектӣ?
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 "Парвоз";
}
}
Инчунин, класи абстрактӣ қисми иҷроишро муайян мекунад, интерфейс — танҳо шартнома.