Heim >Backend-Entwicklung >PHP-Tutorial >Vergleichende Einführung in die Klassenvererbung und Schnittstellenvererbung in PHP

Vergleichende Einführung in die Klassenvererbung und Schnittstellenvererbung in PHP

不言
不言nach vorne
2018-10-10 17:02:183213Durchsuche

Der Inhalt dieses Artikels ist eine vergleichende Einführung in die Klassenvererbung und die Schnittstellenvererbung in PHP. Ich hoffe, dass er für Sie hilfreich ist.

PHP-Klassenvererbung:

1. PHP-Klassen unterstützen keine Mehrfachvererbung, das heißt, Unterklassen können nur eine übergeordnete Klasse erben, unterstützen jedoch mehrstufige Vererbung, wie zum Beispiel:

class frist{
    public function __construct(){
        echo "我是第一个类。","<br>";
    }
    public function printer(){
        echo "frist","<br>";
    }
}
class seconds extends frist{}
class third extends seconds{}
$obj = new third();
$obj->printer();

Ergebnis: Dies ist die erste Klasse. Die zweite und dritte Klasse von frist überschreiben die Methode „printer()“ nicht. Die Methode „printer()“ kann aufgerufen werden, nachdem die dritte Klasse instanziiert wurde.

2. Vererbungsberechtigungsprobleme

(1) Die private Methode der übergeordneten Klasse kann nicht vererbt werden und die übergeordnete Klasse ist privatisiert

(2) Die Die geschützte Methode der übergeordneten Klasse kann geerbt werden, kann jedoch nicht von einem instanziierten Objekt aufgerufen werden. Beim Aufruf wird die Fehlermeldung „Aufruf der geschützten Methode frist::printer()“ angezeigt. Die übergeordnete Klasse versetzt diese Methode in den geschützten Modus

(3) Die öffentlichen Methoden der übergeordneten Klasse können von instanziierten Objekten geerbt und aufgerufen werden und sind öffentliche Methoden

(4) Unterklassen können die öffentlichen oder überschreiben geschützte Methoden der übergeordneten Klasse und Methoden können nicht erneut privatisiert werden. Wenn derselbe Name verwendet wird, deklarieren Sie ihn einfach in dieser Klasse neu

3. Vererbung der Schnittstellenklasse

(1) Die Schnittstelle unterstützt Mehrfachvererbung und die Methoden der Schnittstellenklasse müssen nicht implementiert werden. Beispiel:

interface frist{
    public function ex1();
}
interface seconds{
    public function ex2();
}
interface third extends frist,seconds{
    public function ex3();
}
class fourth implements third{
    public function ex1(){}
    public function ex2(){}
    public function ex3(){}
}
class fourth implements frist,seconds{
    public function ex1(){}
    public function ex2(){}
}

(2) Die Methodenberechtigungen der Schnittstellenklasse sind alle öffentlich und die Standardeinstellung ist öffentlich

(3) Die Klasse, die auf die Schnittstelle verweist, muss alle Methoden der Schnittstelle implementieren, andernfalls wird ein Fehler gemeldet, wie zum Beispiel: „Klasse e enthält 1 abstrakte Methode und muss daher deklariert werden.“ abstrahieren oder implementieren Sie die verbleibenden Methoden“, das heißt: Klasse e enthält 1 abstrakte Methode, daher müssen die verbleibenden Methoden als abstrakt oder implementiert deklariert werden.

4. Abstrakte Klasse: Solange eine Methode in einer Klasse eine abstrakte Methode ist, muss diese Klasse als abstrakte Klasse definiert werden

(1) Abstrakte Klassen erben und abstrakte Klassen können nicht übergeordnete Klassenmethode überschreiben.

(2) Die abstrakte Klassenvererbung ist die Erweiterung der Methoden der übergeordneten Klasse.

(3) Alle abstrakten Methoden in geerbten abgeleiteten Klassen müssen überladen werden, bevor sie instanziiert werden können.

(4) Die durch abstrakte Klassen implementierte gewöhnliche Verteilung kann direkt in nicht-abstrakten Unterklassen aufgerufen werden.

5. Ähnlichkeiten und Unterschiede zwischen Schnittstellen und abstrakten Klassen (bezogen auf den Unterschied zwischen abstrakten Klassen und Schnittstellen)

(1) Die Verwendung von Schnittstellen wird durch das Schlüsselwort „implementiert“ und „abstrakt“ erreicht Klassen Die Operation wird mit dem Schlüsselwort exotends der Klassenvererbung implementiert

(2) Die Schnittstelle hat keine Datenmitglieder, aber die abstrakte Klasse hat Datenmitglieder, und die abstrakte Klasse kann die Datenkapselung implementieren.

(3) Die Schnittstelle hat keinen Konstruktor, aber die abstrakte Klasse kann einen Konstruktor haben.

(4) Die Methoden in der Schnittstelle sind alle öffentliche Typen, während die Methoden in der abstrakten Klasse durch private, geschützte oder öffentliche Methoden geändert werden können.

(5) Eine Klasse kann mehrere Schnittstellen gleichzeitig implementieren, aber nur eine abstrakte Klasse.

(6) Ähnlichkeit: In den Funktionskörper kann nichts geschrieben werden, wie zum Beispiel: function getName();.

Das obige ist der detaillierte Inhalt vonVergleichende Einführung in die Klassenvererbung und Schnittstellenvererbung in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen

In Verbindung stehende Artikel

Mehr sehen