1. Schnittstelle
In der Programmiersprache PHP ist eine Schnittstelle ein abstrakter Typ und eine Sammlung abstrakter Methoden. Schnittstellen werden normalerweise als Schnittstelle deklariert. Eine Klasse implementiert die Methoden der Schnittstelle (abstrakte Methoden), indem sie die Schnittstelle implementiert.
Schnittstellendefinition:
interface InterAnimal{ public function speak(); public function name($name); }//接口实现 class cat implements InterAnimal{ public function speak(){ echo "speak"; } public function name($name){ echo "My name is ".$name; } }
Besonderer Hinweis:
* Alle Klassen sind abstrakte Methoden (keine Notwendigkeit, abstrakt zu deklarieren)
* Die abstrakte Methode der Schnittstelle ist öffentlich
* Mitglieder (Felder) müssen Konstanten sein
2. Vererbung
Eine Klasse, die von einer anderen Klasse erbt, wird als Unterklasse dieser Klasse bezeichnet. Diese Beziehung wird oft durch die Metapher von Eltern und Kind dargestellt. Die Unterklasse erbt
die Eigenschaften der übergeordneten Klasse. Diese Eigenschaften bestehen aus Eigenschaften und Methoden. Unterklassen können über die Funktionen der übergeordneten Klasse hinaus neue Funktionen hinzufügen. Daher werden Unterklassen auch als „Erweiterungen“ der übergeordneten Klasse bezeichnet.
In PHP wird die Klassenvererbung über das Schlüsselwort „extens“ implementiert. Klassen, die von anderen Klassen erben, werden zu Unterklassen oder abgeleiteten Klassen, und Klassen, von denen Unterklassen erben, werden zu übergeordneten Klassen oder Basisklassen.
class Computer { private $_name = '联想'; public function __get($_key) { return $this->$_key; } public function run() { echo '父类run方法'; } }class NoteBookComputer extends Computer {}$notebookcomputer = new NoteBookComputer ();$notebookcomputer->run (); //继承父类中的run()方法echo $notebookcomputer->_name; //通过魔法函数__get()获得私有字段
Manchmal werden die Felder und Methoden der übergeordneten Klasse nicht benötigt, sodass die Felder und Methoden der übergeordneten Klasse durch Umschreiben der Unterklasse geändert werden können.
class Computer { public $_name = '联想'; protected function run() { echo '我是父类'; } }//重写其字段、方法class NoteBookComputer extends Computer { public $_name = 'IBM'; public function run() { echo '我是子类'; } }
Manchmal müssen wir in der Lage sein, den Methodeninhalt der übergeordneten Klasse über die überschriebene Methode aufzurufen. In diesem Fall müssen wirAbstrakte Klasseneigenschaften:verwenden Syntax: Name der übergeordneten Klasse::method(), parent::method() kann aufgerufen werden.
3. Abstrakte Klassen und Methoden
Das letzte Schlüsselwort kann verhindern, dass eine Klasse geerbt wird. Manchmal möchten Sie einfach nur eine unabhängige Klasse sein und nicht von anderen Klassen geerbt und verwendet werden.
* Abstrakte Klassen können keine Instanzobjekte erzeugen und können nur vererbt werden;
* Abstrakte Methoden müssen in abstrakten Klassen sein. In abstrakten Klassen müssen nicht unbedingt abstrakte Methoden vorhanden sein.
* Beim Erben einer abstrakten Klasse muss die Unterklasse alle abstrakten Methoden in der übergeordneten Klasse überschreiben.
* Eine als abstrakt definierte Methode deklariert nur ihre aufrufende Methode (Parameter). , Nicht realisiert.
abstract class Computer { abstract function run();}final class NotebookComputer extends Computer { public function run() { echo '抽象类的实现'; } }
interface Computer { public function version(); public function work();}class NotebookComputer implements Computer { public function version() { echo '联想<br>'; } public function work() { echo '笔记本正在随时携带运行!'; } }class desktopComputer implements Computer { public function version() { echo 'IBM'; } public function work() { echo '台式电脑正在工作站运行!'; } }class Person { public function run($type) { $type->version (); $type->work (); } }$person = new Person ();$desktopcomputer = new desktopComputer ();$notebookcomputer = new NoteBookComputer ();$person->run ( $notebookcomputer );
Das obige ist der detaillierte Inhalt vonEinführung in die objektorientierte Vererbung, den Polymorphismus und die Kapselung von PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!