PHP5-Schnittstellentechnologie
PHP unterstützt, wie die meisten objektorientierten Programmiersprachen , keine Mehrfachvererbung Das heißt, jede A-Klasse kann nur von einer übergeordneten
-Klasse erben. Um dieses Problem zu lösen, hat PHP Schnittstellen eingeführt. Die Idee von Schnittstellen besteht darin, eine Reihe von Methoden anzugeben, die eine Klasse, die die Schnittstelle implementiert,
implementieren muss. Die Schnittstelle ist eine spezielle abstrakte Klasse , und die abstrakte Klasse ist eine spezielle Klasse, also ist die Schnittstelle auch eine
spezielle Klasse. Warum wird die Schnittstelle als spezielle abstrakte Klasse bezeichnet? Wenn alle Methoden in einer abstrakten Klasse
abstrakte Methoden sind, ändern wir die Deklarationsmethode so, dass sie „Schnittstelle“ verwendet. Das heißt, alle Methoden in der Schnittstelle müssen
als abstrakte Methoden deklariert werden in der Schnittstelle deklariert werden und alle Mitglieder in der Schnittstelle verfügen über öffentliche Berechtigungen.
Daher müssen Unterklassen bei der Implementierung auch öffentliche Berechtigungen verwenden.
Das Schlüsselwort, das wir beim Deklarieren einer Klasse verwenden, ist „class“, und die Schnittstelle ist eine spezielle Klasse, und das verwendete Schlüsselwort
ist „interface“
Klassendefinition: Klasse Klassenname { … }, Schnittstellendeklaration: Schnittstelle Schnittstellenname { ... }
Code-Snippet
<?php abstract class Demo{ var $test; abstract function fun1(); abstract function fun2(); function fun3(){ … . } } $demo=new Demo(); //抽象类为能产生实例对象,所以这样做是错的,实例化对象交给子类 class Test extends Demo{ function fun1(){ … } function fun2(){ … } } $test=new Test(); //子类可以实例化对象,因为实现了父类中所有抽象方法 ?>
Im obigen Beispiel wird eine Schnittstelle „one“ definiert, die zwei abstrakte Methoden „fun1“ und „fun2“ deklariert. „Da alle Methoden in der Schnittstelle abstrakte Methoden sind, müssen Sie beim Deklarieren abstrakter Methoden nicht das Schlüsselwort
„abstract“ wie bei einer abstrakten Klasse verwenden , die „öffentliche“ Zugriffsberechtigung
in der Schnittstelle kann auch entfernt werden, da die Standardeinstellung öffentlich ist, da alle Mitglieder in der Schnittstelle öffentlich sein müssen, sodass wir sie nicht verwenden können. „ Für „private“ und „geschützte“ Berechtigungen verwenden öffentlich oder die Standardeinstellung
. Darüber hinaus haben wir in der Schnittstelle auch eine Konstante „constant“ deklariert. Da Variablen nicht als Mitglieder in der Schnittstelle verwendet werden können, müssen wir die Schlüsselwortdeklaration const verwenden.
Da es sich bei der Schnittstelle um eine spezielle abstrakte Klasse handelt, sind alle darin enthaltenen Methoden abstrakte Methoden, sodass die Schnittstelle keine Instanzobjekte erzeugen kann.
Es handelt sich auch um eine Spezifikation, und alle abstrakten Methoden müssen durch Unterklassen implementiert werden.
Wir können das Schlüsselwort „extends“ verwenden, um eine Schnittstelle eine andere Schnittstelle erben zu lassen.
Codeausschnitt
Und wir definieren eine Unterklasse einer Schnittstelle, um alle abstrakten Methoden in der Schnittstelle zu implementieren Schlüsselwort ist „implementiert“ und
<?php //使用”extends”继承另外一个接口 interface Two extends One{ function fun3(); function fun4(); } ?>
Wir können auch abstrakte Klassen verwenden, um einen Teil der Abstraktion in der Schnittstellenmethode zu implementieren , aber um ein Objekt zu instanziieren, muss diese abstrakte
<?php //使用“implements”这个关键字去实现接口中的抽象方法 class Three implements One{ function fun1(){ … . } function fun2(){ … . } } //实现了全部方法,我们去可以使用子类去实例化对象了 $three=new Three(); ?>
, was gleichbedeutend damit ist, dass eine Klasse mehrere Spezifikationen einhalten muss, so wie wir uns nicht nur an die Gesetze des Landes halten müssen, sondern auch, wenn wir in der Schule sind einhalten
Die Schulregeln sind die gleichen;
Codeausschnitte
In PHP kann nicht nur eine Klasse mehrere Schnittstellen implementieren, sondern Sie können auch mehrere Schnittstellen implementieren, während Sie eine Klasse erben. Sie müssen zuerst
<?php //使用implements实现多个接口 class Four implemtns 接口一, 接口二, … .{ //必须把所有接口中的方法都要实现才可以实例化对象。 } ?>
<?php //使用extends继承一个类,使用implements实现多个接口 class Four extends 类名一implemtns 接口一, 接口二, … .{ //所有接口中的方法都要实现才可以实例化对象 … … … .. } ?>
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung von Beispielen für die objektorientierte PHP-Schnittstellentechnologie. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!