Sobes.tech
Junior — Middle

Obyektga yo'naltirilgan dasturlashda abstrakt sinf va interfeys qanday farq qiladi?

sobes.tech AI

AIdan javob

PHP'da abstrakt sinf va interfeys quyidagi farqlarga ega:

  • Abstrakt sinf abstrakt metodlar (implementatsiyasiz) va shuningdek, implementatsiyali metodlar va xususiyatlarni o'z ichiga olishi mumkin.

  • Interfeys faqat metodlar e'lonlarini o'z ichiga oladi (PHP 8 dan boshlab, standart implementatsiyalar qo'shish mumkin, ammo bu xususiyat), holat (xususiyatlar) emas.

  • Bir sinf faqat bitta abstrakt sinfdan meros olishi mumkin, lekin bir nechta interfeyslarni amalga oshirishi mumkin.

  • Abstrakt sinf asosiy implementatsiya va umumiy shartnoma belgilash uchun ishlatiladi, interfeys esa faqat shartnoma belgilash uchun ishlatiladi.

Misol:

abstract class Animal {
    abstract public function makeSound();
    public function sleep() {
        echo "Uyquda";
    }
}

interface CanFly {
    public function fly();
}

class Bird extends Animal implements CanFly {
    public function makeSound() {
        echo "Chirp";
    }
    public function fly() {
        echo "Uchmoqda";
    }
}

Shu tarzda, abstrakt sinf qisman implementatsiyani belgilaydi, interfeys esa faqat shartnomani.