Sobes.tech
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 "Ուժեղ";
    }
}

Այսպիսով, ամփոփ դասը սահմանում է մասնակի իրականացում, իսկ ինտերֆեյսը — միայն պայմանագիր.