Sobes.tech
Junior — Middle

Obyekt yönümlü proqramlaşdırmada abstrakt sinif ilə interfeys arasındakı fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

PHP-də abstrakt sinif və interfeys aşağıdakı fərqlərə malikdir:

  • Abstrakt sinif həm abstrakt metodlar (tərtib olunmamış), həm də tətbiq olunan metodlar və xüsusiyyətlər ehtiva edə bilər.

  • Interfeys yalnız metodların elanlarını ehtiva edir (PHP 8-dən etibarən standart tətbiqlər əlavə etmək mümkündür, lakin bu bir xüsusiyyətdir), vəziyyət (xüsusiyyətlər) ehtiva etmir.

  • Bir sinif yalnız bir abstrakt sinifdən irs ala bilər, lakin bir neçə interfeysi həyata keçirə bilər.

  • Abstrakt sinif əsas tətbiqi və ümumi müqaviləni müəyyən etmək üçün istifadə olunur, interfeys isə yalnız müqaviləni müəyyən etmək üçün istifadə olunur.

Nümunə:

abstract class Animal {
    abstract public function makeSound();
    public function sleep() {
        echo "Yatır";
    }
}

interface CanFly {
    public function fly();
}

class Bird extends Animal implements CanFly {
    public function makeSound() {
        echo "Cıvıldamaq";
    }
    public function fly() {
        echo "Uçmaq";
    }
}

Beləliklə, abstrakt sinif qismən tətbiqi müəyyən edir, interfeys isə yalnız müqaviləni.