Heim  >  Artikel  >  Backend-Entwicklung  >  Verstehen Sie PHP-Klassen, Objekte, abstrakte Klassen und Schnittstellen in einem Artikel

Verstehen Sie PHP-Klassen, Objekte, abstrakte Klassen und Schnittstellen in einem Artikel

silencement
silencementnach vorne
2020-01-22 00:07:112751Durchsuche

Verstehen Sie PHP-Klassen, Objekte, abstrakte Klassen und Schnittstellen in einem Artikel

Klassen und Objekte: abstrakte Klassen, Schnittstellen

Abstrakte Klassen und Schnittstellen: Abstrakte Klassen und Schnittstellen sind spezielle Klassen und können nicht instanziiert werden.

Abstrakte Klasse:

Die abstrakten Methoden in abstrakten Klassen sind leere Methoden ohne konkrete Implementierung. Abstrakte Klassen können verwendet werden, um funktionale Definitionen für Unterklassen festzulegen. Daher zwingen abstrakte Klassen Entwickler dazu, nur von einer bestimmten übergeordneten Klasse

zu erben und dann in den geerbten unterklassenspezifischen Funktionen das zu vervollständigen, was sie benötigen.

Das Syntaxformat zum Definieren einer abstrakten Klasse lautet wie folgt:

abstract class 类名称{
  //抽象类的成员变量列表
  abstract function 成员方法1([参数1],[参数2],……);
  abstract function 成员方法2([参数1],[参数2],……);
  //其他代码
}

Abstrakte Klassen ähneln gewöhnlichen Klassen und haben auch Der Unterschied zwischen Mitgliedsattributen und Mitgliedsmethoden besteht darin, dass abstrakte Klassen nicht instanziiert werden können.

Das Folgende definiert eine einfache und vollständige abstrakte Klasse:

abstract class MyClass{ //定义抽象类
  abstract protected function myFunction($arg); //定义抽象方法
}

PS: Die Definition einer abstrakten Klasse muss mindestens eine Modifikation mit dem Schlüsselwort abstract und ohne jegliche enthalten Implementierung abstrakter Methode.

Der Implementierungsprozess abstrakter Klassen:

In abstrakten Klassen können nicht nur abstrakte Methoden definiert werden, sondern auch einige Mitgliedsmethoden, die bestimmte Funktionen ausführen können, können wie gewöhnliche Klassen definiert werden erben Nach der Abstraktion der Klasse können Sie

direkt auf diese Mitgliedsmethoden verweisen, die die angegebenen Funktionen ausführen können.

class 子类名称 extends 抽象类名称{
  //子类的成员变量列表
  
  function 抽象方法名称([参数1],[参数2],……){
      //抽象方法的具体实现
  }
  //其他代码
 }

PS: Wenn eine Klasse von einer abstrakten Klasse erbt, muss sie alle in der abstrakten Klasse definierten Methoden enthalten, sonst tritt zur Laufzeit ein Fehler auf.

Das Folgende ist ein Beispiel für die Implementierung einer abstrakten Klasse:

abstract class Study{
  abstract function printStudy($name,$lang); //定义一个抽象方法
}
 
class OneStudy extends Study { //定义子类继承于父类
  function printStudy($name,$lang){ //抽象方法的具体实现
      echo $name."正在整理".$lang."……";
  }
 }
 
class TwoStudy extends Study {
  function printStudy($name,$lang){
      echo $name."正在整理".$lang."……";
    }
}
  $first=new OneStudy();
  $first->printStudy("大兵","PHP基础知识");
  echo "";
  $second=new TwoStudy();
  $second->printStudy("小兵","SEO基础知识");

Das Ergebnis der Ausführung dieses Programms ist:

Ding Bing ist die Grundkenntnisse von PHP klären... …

Xiaobing sortiert die Grundlagen von SEO...

Schnittstelle definieren:

An Die Schnittstelle ist eine Sammlung von Mitgliedsmethodendeklarationen, die nur einige leere Mitgliedsmethoden oder einige Klassenkonstanten enthalten. Diese leeren Mitgliedsmethoden werden von der Klasse implementiert, die die Schnittstelle implementiert.

Um eine Schnittstelle zu definieren, müssen Sie das Schlüsselwort interface verwenden. Das Syntaxformat lautet wie folgt:

interface 接口名称{
  //类常量列表
  function 成员方法1([参数1],[参数2],……);
  function 成员方法2([参数1],[参数2],……);
  //其他代码
}

Da die Schnittstelle nicht instanziiert werden kann, gibt es keine Konstruktionsmethode oder Dekonstruktionsmethode Schnittstelle Es muss nur eine Reihe von Elementen angegeben werden. Die Deklaration der zu implementierenden Mitgliedsmethode reicht aus.

Das Folgende definiert eine einfache und vollständige Schnittstelle:

interface class MyClass{ //定义接口
  public function myFunction($arg); //定义方法
}

Der Implementierungsprozess der Schnittstelle:

Ähnlich wie a Klasse, eine Schnittstelle. Kann auch vererbt werden. Eine Schnittstelle kann mehrere Schnittstellen erben, eine Schnittstelle kann jedoch keine Klasse erben. Um eine Schnittstelle zu implementieren, verwenden Sie das Schlüsselwort „implements“.

Wenn Sie eine Klasse zum Implementieren einer Schnittstelle verwenden, muss diese mindestens alle in der Schnittstelle definierten Methoden enthalten, andernfalls tritt zur Laufzeit ein Fehler auf.

Das Folgende ist ein Beispiel für die Implementierung einer Schnittstelle:

interface IName{ //定义接口IName
  function setName($name);
  function getName();
  }
  interface IAge{ //定义接口IAge
  function setAge($age);
  function getAge();
  }
  class DaBing implements IName,IAge{ //定义实现接口的类
  private $name;
  private $age;
  function setName($name){
  $this->name=$name;
  }
  function getName(){
  echo "姓名:".$this->name." ";
  }
  function setAge($age){
  $this->age=$age;
  }
  function getAge(){
  echo "年龄:".$this->age;
  }
  }
  $obj=new DaBing();
  $obj->setName("大兵");
  $obj->getName();
  $obj->setAge(25);
  $obj->getAge();

Das Ergebnis der Ausführung des Programms ist:

Name: Soldat Alter: 25

Zusammenfassung Unterschiede zwischen Klassen und Schnittstellen:

Die Verwendung von Schnittstellen wird durch das Schlüsselwort „implementiert“ erreicht. Operationen an abstrakten Klassen werden durch die Vererbung des Schlüsselworts „extends“ implementiert.

Schnittstellen haben keine Datenmitglieder, aber abstrakte Klassen haben Datenmitglieder, und abstrakte Klassen können einen Datenabschluss erreichen.

Schnittstellen haben keine Konstruktoren, während abstrakte Klassen Konstruktoren haben können.

Methoden in Schnittstellen sind vom öffentlichen Typ, während Methoden in abstrakten Klassen durch private, geschützte oder öffentliche Methoden geändert werden können.

Eine Klasse kann mehrere Schnittstellen gleichzeitig implementieren, aber eine Klasse kann nur von einer abstrakten Klasse erben.

Es kann keinen Implementierungscode für Mitgliedsmethoden in Schnittstellen geben, aber es kann Implementierungscode für Mitgliedsmethoden in abstrakten Klassen geben.

PS: Wenn Sie in einer Anwendung einer bestimmten Klasse weitere Verhaltensweisen hinzufügen müssen, können Sie eine Schnittstelle definieren, um diese Verhaltensweisen zu kombinieren. Wenn Sie die Daten und das Verhalten einer bestimmten Sache wiederverwenden müssen, sollten Sie eine abstrakte Klasse definieren, um diese Variablen und Funktionen zu kapseln.


Das obige ist der detaillierte Inhalt vonVerstehen Sie PHP-Klassen, Objekte, abstrakte Klassen und Schnittstellen in einem Artikel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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