Heim Backend-Entwicklung PHP-Tutorial Detaillierte grafische Erläuterung der Schlüsselwortschnittstelle und der Implementierungen in PHP

Detaillierte grafische Erläuterung der Schlüsselwortschnittstelle und der Implementierungen in PHP

May 21, 2018 pm 02:54 PM
implements interface 关键字

PHP-Klassen sind Einzelvererbungen, das heißt, sie unterstützen keine Mehrfachvererbung. Wenn eine Klasse die Funktionen mehrerer Klassen benötigt, ist die Vererbung machtlos. Aus diesem Grund führt PHP die Klassenschnittstellentechnologie ein. Der folgende Artikel stellt Ihnen hauptsächlich die relevanten Informationen zur Schlüsselwortschnittstelle und zur Implementierung in PHP vor. Freunde, die sie benötigen, können einen Blick darauf werfen.

PHP-Schnittstelle

Die PHP-Klasse ist eine Einzelvererbung, das heißt, sie unterstützt keine Mehrfachvererbung, wenn eine Klasse mehrere Vererbungen erfordert Klassen Wenn es um Funktionen geht, ist die Vererbung machtlos, daher führt PHP die Klassenschnittstellentechnologie ein.

Wenn alle Methoden in einer abstrakten Klasse abstrakte Methoden sind und keine Variablen deklariert sind und alle Mitglieder in der Schnittstelle über öffentliche Berechtigungen verfügen, wird diese spezielle abstrakte Klasse als Schnittstelle bezeichnet.

Die Schnittstelle wird mit dem Schlüsselwort „interface“ definiert, und das Schlüsselwort „implements“ dient zur Implementierung der Methoden in der Schnittstelle, die vollständig implementiert sein müssen.

Anwendung der Schnittstelle im Unterricht

1. Stichwort: Schnittstelle

2. Stichwort: implementiert

1. Einführung und Erstellung von Schnittstellen

Schnittstelle: eine spezielle abstrakte Klasse, deren Mitgliedsattribute alle abstrakt oder konstant sind.

Regeln:

1. Alle Methoden in der Klasse sind abstrakt.

2. Für abstrakte Methoden muss kein Abstract hinzugefügt werden.

3. Das abstrakte Methodenattribut der Schnittstelle ist öffentlich.

4. Mitgliedsattribute müssen Konstanten sein.

Der Formatcode lautet wie folgt:

interface demo { 
const NAME = "常量对象属性"; 
function fun1(); 
function fun2(); //抽象方法。 
}
Nach dem Login kopieren

2. Anwendung und Spezifikation der Schnittstelle

Schnittstellenreferenz Anders als beim Klassenvererbungsschlüsselwort „extends“ kann die Vererbung nur einzeln erfolgen, während die Schnittstelle das Schlüsselwort „implements“ verwenden kann, um mehrere durch Kommas getrennte Referenzen zu haben

1 Format: normale Klassenreferenzschnittstelle

class MyPc implements demo , demo2 , demo3 { 
... 
}
Nach dem Login kopieren

2. Format: Beispiel für eine abstrakte Klassenanwendung

abstract class MyPc implements demo , demo2 , demo3 { 
... 
}
Nach dem Login kopieren

3 Referenzschnittstelle und Koexistenz

class MyPc extends Root implements demo , demo2 , demo3 { 
... 
}
Nach dem Login kopieren

Zuerst erben und dann Schnittstelle, einzelne Vererbung mehrerer Schnittstellen.

4. Format: Schnittstelle und Vererbung von Schnittstellen

interface demo3 extends demo { 
... 
}
Nach dem Login kopieren

Der Beispielcode lautet wie folgt:

<?php 
interface demo { 
 const NAME = "名称"; 
 function fun1(); 
 function fun2(); 
} 
interface demo2 { 
 function fun3(); 
 function fun4(); 
} 
interface demo3 { 
 const TEST = "Test"; 
 function fun5(); 
} 
class MyPc implements demo, demo2 { 
 function fun1() { 
 echo "++++++++++<br />"; 
 } 
 function fun2() { 
 echo "----------<br />"; 
 } 
 function fun3() { 
 echo "1111111111<br />"; 
 } 
 function fun4() { 
 echo "2222222222<br />"; 
 } 
} 
class MyPs extends MyPc implements demo3 { 
 function fun5() { 
 echo "继承类后引用接口"; 
 } 
} 
$p = new MyPs; 
$p->fun1(); 
$p->fun2(); 
$p->fun3(); 
$p->fun4(); 
$p->fun5(); 
?>
Nach dem Login kopieren

Zum Beispiel wird die Schnittstelle mit dem Schlüsselwort „interface“ definiert, und das Schlüsselwort „implements“ wird zum Implementieren der Methoden in der Schnittstelle verwendet und muss vollständig implementiert sein.

Der Beispielcode lautet wie folgt:

<?php 
//定义接口 
interface User{ 
 function getDiscount(); 
 function getUserType(); 
} 
//VIP用户 接口实现 
class VipUser implements User{ 
 // VIP 用户折扣系数 
 private $discount = 0.8; 
 function getDiscount() { 
  return $this->discount; 
 } 
 function getUserType() { 
  return "VIP用户"; 
 } 
} 
class Goods{ 
 var $price = 100; 
 var $vc; 
 //定义 User 接口类型参数,这时并不知道是什么用户 
 function run(User $vc){ 
  $this->vc = $vc; 
  $discount = $this->vc->getDiscount(); 
 $usertype = $this->vc->getUserType(); 
  echo $usertype."商品价格:".$this->price*$discount; 
 } 
} 
$display = new Goods(); 
$display ->run(new VipUser); //可以是更多其他用户类型 
?>
Nach dem Login kopieren

Führen Sie das Beispiel aus, die Ausgabe lautet:

VIP-Benutzerproduktpreis : 80 Yuan

Dieses Beispiel zeigt eine einfache Anwendung einer PHP-Schnittstelle. In diesem Beispiel implementiert die Benutzeroberfläche den Rabatt des Benutzers und die VipUser-Klasse implementiert den spezifischen Rabattkoeffizienten. Schließlich implementiert die Produktkategorie Waren unterschiedliche Benutzerangebote basierend auf der Benutzeroberfläche.

Dieses Beispiel beschränkt sich auf die Demonstration der Verwendung der PHP-Schnittstelle und geht nicht auf deren wissenschaftlichen Charakter ein.

Mehrere Schnittstellen implementieren

PHP kann beim Erben einer Klasse auch mehrere Schnittstellen gleichzeitig implementieren:

class 子类 extends 父类 implemtns 接口1, 接口2, ... 
{ 
 ...... 
}
Nach dem Login kopieren

Der Unterschied zwischen abstrakten Klassen und Interfaces

Interfaces sind spezielle abstrakte Klassen und können auch als Spezifikation eines Modells betrachtet werden. Der allgemeine Unterschied zwischen Schnittstellen und abstrakten Klassen ist wie folgt:

1. Wenn eine Unterklasse eine Schnittstelle implementiert, muss sie alle Methoden in der Schnittstelle implementieren (ob benötigt oder nicht); wenn sie eine abstrakte Klasse erbt, muss sie alle Methoden in der Schnittstelle implementieren Es muss nur die erforderliche Methode implementiert werden. Verwenden Sie einfach die Methode.

2. Wenn sich der in einer Schnittstelle definierte Methodenname ändert, müssen alle Unterklassen, die diese Schnittstelle implementieren, den Methodennamen synchron aktualisieren, und wenn sich der Methodenname in einer abstrakten Klasse ändert, muss der entsprechende Methodenname aktualisiert werden Die Unterklasse wird davon nicht betroffen sein, sie wird lediglich zu einer neuen Methode (relativ zur alten Methodenimplementierung).

3. Abstrakte Klassen können nur einzeln geerbt werden. Wenn eine Unterklasse Funktionen implementieren muss, die von mehreren übergeordneten Klassen geerbt werden müssen, müssen Schnittstellen verwendet werden.

<?php
//简单定义实现接口
interface UserInterface{ //定义user接口
 function getname();
}
interface TeacherInterface{ //定义teacher接口
 function getLengthofService();
}
class User implements UserInterface{ //实现user接口
 private $name="nostop";
 public function getName(){
  return $this->name;
 }
}
class Teacher implements TeacherInterface{ //实现teacher接口
 private $age=23;
 public function getLengthofService(){
  return $this->age;
 }
}
$user=new User();
echo $user->getName().&#39;<br />&#39;;//nostop
$teacher=new Teacher();
echo $teacher->getLengthofService().&#39;<br />&#39;;//23
//继承类实现接口
class GraduResultudent extends User implements TeacherInterface{ //继承User类 实现接口
 private $teacher;
 public function __construct(){  //定义构造函数
  $this->teacher=new Teacher(); //实例化Teacher对象
 }
 public function getLengthOfService(){ //实现TeacherInterface接口的方法
  return $this->teacher->getLengthOfService();
 }
}

class Result{
 public static function getUserName(UserInterface $_user){ //注意:这里面的类型变成接口类型
  echo "Name is ".$_user->getName().&#39;<br />&#39;;
 }
 public static function getLengthOfService(TeacherInterface $_teacher){ //注意:这里面的类型变成接口类型
  echo "age is ".$_teacher->getLengthOfService();
 }
}

$object=new GraduResultudent();
Result::getUserName($object); //Name is nostop
Result::getLengthOfService($object); //age is 23
echo "<br />";
//接口实现用户的折扣
interface People{ //定义接口
 function getUserType();
 function getCount();
}

class VipUser implements People{ //实现接口
 //用户折卡系数
 private $discount=0.8;
 function getUserType(){
  return "VIP用户";
 }
 function getCount(){
  return $this->discount;  
 }
}

$vip=new VipUser(); //实现化对象
echo $vip->getUserType().&#39;商品价格:&#39;.$vip->getCount()*100; //VIP用户商品价格:80

class Goods{
 var $price=100;
 var $member;
 function run(People $member){ //注意:这里面的参数类型是接口类型
  $this->member=$member;
  $discount=$this->member->getCount();
  $usertype=$this->member->getUserType();
  echo $usertype."商品价格:".$this->price*$discount;
 }
}
$display=new Goods();
$display->run(new VipUser);//VIP用户商品价格:80

?>
Nach dem Login kopieren

Verwandte Empfehlungen:

Über PHP inGeräten

Detaillierte Erläuterung der Verwendung von Geräten in PHP

implementiert in PHP Gebrauchsanweisung

Das obige ist der detaillierte Inhalt vonDetaillierte grafische Erläuterung der Schlüsselwortschnittstelle und der Implementierungen in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Eingehende Analyse der Rolle und Verwendung des statischen Schlüsselworts in der C-Sprache Eingehende Analyse der Rolle und Verwendung des statischen Schlüsselworts in der C-Sprache Feb 20, 2024 pm 04:30 PM

Eingehende Analyse der Rolle und Verwendung des Schlüsselworts „static“ in der Sprache C. In der Sprache C ist „static“ ein sehr wichtiges Schlüsselwort, das bei der Definition von Funktionen, Variablen und Datentypen verwendet werden kann. Die Verwendung des Schlüsselworts static kann die Linkattribute, den Umfang und den Lebenszyklus des Objekts ändern. Lassen Sie uns die Rolle und Verwendung des Schlüsselworts static in der C-Sprache im Detail analysieren. Statische Variablen und Funktionen: Variablen, die mit dem Schlüsselwort static innerhalb einer Funktion definiert werden, werden als statische Variablen bezeichnet, die einen globalen Lebenszyklus haben

Die Rolle und Beispiele des Schlüsselworts var in PHP Die Rolle und Beispiele des Schlüsselworts var in PHP Jun 28, 2023 pm 08:58 PM

Die Rolle und Beispiele des Schlüsselworts var in PHP In PHP wird das Schlüsselwort var zum Deklarieren einer Variablen verwendet. In früheren PHP-Versionen war die Verwendung des Schlüsselworts var die idiomatische Methode zum Deklarieren von Mitgliedsvariablen, seine Verwendung wird jedoch nicht mehr empfohlen. In einigen Fällen wird jedoch weiterhin das Schlüsselwort var verwendet. Das Schlüsselwort var wird hauptsächlich verwendet, um eine lokale Variable zu deklarieren und die Variable automatisch als lokalen Bereich zu markieren. Dies bedeutet, dass die Variable nur innerhalb des aktuellen Codeblocks sichtbar ist und nicht in anderen Funktionen oder Codeblöcken darauf zugegriffen werden kann. Verwenden Sie var

Ist go ein Schlüsselwort in der C-Sprache? Detaillierte Analyse Ist go ein Schlüsselwort in der C-Sprache? Detaillierte Analyse Mar 16, 2024 am 10:30 AM

Titel: Ist go ein Schlüsselwort in der C-Sprache? Detaillierte Analyse In der C-Sprache ist „go“ kein Schlüsselwort. Schlüsselwörter in der C-Sprache werden vom C-Standard spezifiziert und zur Darstellung spezifischer grammatikalischer Strukturen oder Funktionen verwendet. Sie haben im Compiler eine besondere Bedeutung und können nicht als Bezeichner oder Variablennamen verwendet werden. Beispielsweise stellt das Schlüsselwort „int“ einen ganzzahligen Datentyp dar, „if“ stellt eine bedingte Anweisung dar und so weiter. Wenn wir überprüfen möchten, ob „go“ ein Schlüsselwort in der C-Sprache ist, können wir ein einfaches Programm schreiben, um es zu testen. Hier ist ein Beispiel: #inc

Wie viele Schlüsselwörter gibt es in der C-Sprache? Wie viele Schlüsselwörter gibt es in der C-Sprache? Nov 22, 2022 pm 03:39 PM

Es gibt 32 Schlüsselwörter in der C-Sprache. Je nach Funktion können Schlüsselwörter in vier Kategorien unterteilt werden: Schlüsselwörter für Datentypen, Schlüsselwörter für Steueranweisungen, Schlüsselwörter für Speichertypen und andere Schlüsselwörter. Es gibt 12 Schlüsselwörter für Datentypen, einschließlich char, double, float, int usw.; es gibt 12 Schlüsselwörter für Steueranweisungen, einschließlich for, break, if, else, do usw.; es gibt 4 Schlüsselwörter für Speichertypen, einschließlich auto, static , extern usw.; es gibt 4 weitere Schlüsselwörter, einschließlich const, sizeof usw.

Wie verwendet PHP8 die Stringable-Schnittstelle, um verschiedene Arten von Zeichenfolgen zu verarbeiten? Wie verwendet PHP8 die Stringable-Schnittstelle, um verschiedene Arten von Zeichenfolgen zu verarbeiten? Oct 18, 2023 am 11:33 AM

Wie verwendet PHP8 StringableInterface, um verschiedene Arten von Zeichenfolgen zu verarbeiten? PHP8 führt eine neue Schnittstelle Stringable ein, die Entwicklern helfen kann, verschiedene Arten von Strings bequemer zu verarbeiten. In der Vergangenheit haben wir normalerweise die Funktion is_string() verwendet, um zu bestimmen, ob eine Variable vom Typ String ist, und um dann entsprechende Operationen auszuführen. Jetzt können wir mit der Stringable-Schnittstelle intuitiver mit Strings umgehen, ohne ihren Typ bestimmen zu müssen.

Detaillierte Erläuterung der Rolle und Verwendung des Schlüsselworts „Extens' in PHP Detaillierte Erläuterung der Rolle und Verwendung des Schlüsselworts „Extens' in PHP Jun 28, 2023 pm 08:04 PM

Ausführliche Erläuterung der Rolle und Verwendung des Schlüsselworts „Extens“ in PHP. In der PHP-Programmierung ist Extens ein sehr wichtiges Schlüsselwort, das zur Implementierung der Klassenvererbung verwendet wird. Mit dem Schlüsselwort „extends“ können wir eine neue Klasse erstellen, die die Eigenschaften und Methoden einer oder mehrerer vorhandener Klassen erben kann. Vererbung ist ein wichtiges Konzept in der objektorientierten Programmierung, das die Wiederverwendung und Erweiterung von Code bequemer und flexibler macht. In diesem Artikel werden die Funktion und Verwendung des Schlüsselworts „Extens“ ausführlich vorgestellt. erstreckt sich

Go-Sprachschlüsselwortliste Go-Sprachschlüsselwortliste Apr 07, 2024 pm 02:15 PM

Die Schlüsselwörter der Go-Sprache sind: grundlegende Schlüsselwörter: const, func, type, var, if, else, for, return Datentypbezogene Schlüsselwörter: bool, string, int, float64, interface{}, map, Slice andere Schlüsselwörter: break, fortfahren, aufschieben, gehen, auswählen, bereichern

Ist while ein Schlüsselwort in der Go-Sprache? Ist while ein Schlüsselwort in der Go-Sprache? Jun 04, 2021 pm 05:01 PM

In der Go-Sprache ist while kein Schlüsselwort. Sie können die for-Anweisung plus break verwenden, um den Effekt einer while-Schleife zu erzielen, z. B. „for {sum++ if sum>10{break}else{...}}“. Die Go-Sprache verfügt über 25 Schlüsselwörter wie break, default, func, select, case, defer, go, map, else, goto, for, if, var usw.

See all articles