Sobes.tech
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 "Учуп жатат";
    }
}

Ошентип, абстракттуу класс жарым реализацияны аныктайт, ал эми интерфейс — гана келишим.