Sobes.tech
Junior — Middle

Kā atšķiras abstrakta klase no saskarnes objektorientētajā programmēšanā?

sobes.tech AI

Atbilde no AI

PHP irakstāmā klase un interfeiss ir šādi atšķirīgi:

  • Irakstāmā klase var saturēt abstraktus metodes (bez realizācijas), kā arī metodes ar realizāciju un īpašības.

  • Interfeiss satur tikai metožu deklarācijas (no PHP 8 var pievienot noklusējuma realizāciju, bet tas ir īpašums), tas nesatur stāvokli (īpašības).

  • Viena klase var manto tikai no viena abstrakta klases, bet var realizēt vairākus interfeisus.

  • Irakstāmā klase tiek izmantota, kad nepieciešams noteikt pamata realizāciju un kopēju līgumu, bet interfeiss — kad nepieciešams definēt tikai līgumu bez realizācijas.

Piemērs:

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

interface CanFly {
    public function fly();
}

class Bird extends Animal implements CanFly {
    public function makeSound() {
        echo "Čirš";
    }
    public function fly() {
        echo "Lido";
    }
}

Tādējādi, abstraktā klase nosaka daļēju realizāciju, bet interfeiss — tikai līgumu.