Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist die Verwendung einer abstrakten Klasse in PHP?

Was ist die Verwendung einer abstrakten Klasse in PHP?

WBOY
WBOYOriginal
2022-03-03 11:46:511655Durchsuche

In PHP werden abstrakte Klassen hauptsächlich zum Verstecken von Typen verwendet und dienen als globale Variablen. Sie können eine abstrakte Beschreibung eines festen Satzes von Verhaltensweisen erstellen, sofern es eine gibt In der abstrakten Methode der Klasse ist diese Klasse eine abstrakte Klasse.

Was ist die Verwendung einer abstrakten Klasse in PHP?

Die Betriebsumgebung dieses Artikels: Windows 10-System, PHP-Version 7.1, Dell G3-Computer.

Wozu dienen abstrakte Klassen in PHP?

Abstrakte Klassen werden häufig zur Darstellung abstrakter Konzepte verwendet, die aus der Analyse und dem Design von Problembereichen abgeleitet werden. Sie sind Abstraktionen einer Reihe spezifischer Konzepte, die unterschiedlich aussehen, aber im Wesentlichen gleich sind.
Die abstrakte Klasse ist unvollständig und kann nur als Basisklasse verwendet werden. Beim objektorientierten Ansatz werden abstrakte Klassen hauptsächlich zum Verbergen von Typen und als globale Variablen verwendet.

In objektorientierten Methoden werden abstrakte Klassen hauptsächlich zum Verbergen von Typen verwendet. Erstellen Sie eine abstrakte Beschreibung eines festen Satzes von Verhaltensweisen, aber dieser Satz von Verhaltensweisen kann eine beliebige Anzahl möglicher konkreter Implementierungen haben. Diese abstrakte Beschreibung ist die abstrakte Klasse, und diese Menge aller möglichen konkreten Implementierungen wird durch alle möglichen abgeleiteten Klassen repräsentiert. Module können auf einem abstrakten Körper arbeiten. Da das Modul auf einer festen Abstraktion basiert, kann es nicht gleichzeitig geändert werden. Durch die Ableitung von dieser Abstraktion können auch die Verhaltensfunktionen dieses Moduls wie folgt erweitert werden:

<?php
//抽象类像一个模板,供子类扩展(重写),抽象类里有普通方法(有方法体),也有抽象方法,其中抽象方法没有方法体,且以分号结束。
//只要有一个抽象方法,那么此类必须定义为抽象类。
//抽象类不能创建自己的实例,在试图创建抽象类对象时,会产生一个致使错误。
//在子类里实现抽象类的方法,并且可见性要等于、高于抽象方法的可见性,抽象类(public|protected|private),子类(public|public,protected|有致命错误,且不能被继承)。
//抽象类不能定义私有方法,可以定义私有属性。
//如果子类没有扩展(重写)抽象类的抽象方法,会产生致使错误。
abstract class Employees{
  protected $name = null;
  function __construct($nameStr){
    $this->name = $nameStr;
  }
  abstract public function work();
  public function work1(){
    echo "<p>$this->name</p>";
  }
  //function __destruct(){}
}
class Managers extends Employees{
  public function __construct($nameStr){
    parent::__construct($nameStr);
  }
  /*public function work(){//如果子类没有扩展(重写)抽象类的抽象方法,会产生致使错误。
    echo "<p>$this->name is working</p>";
  }*/
}
//$obj1 = new Employees();//创建抽象类对象时,会产生一个致使错误。
$obj2 = new Managers(&#39;e2&#39;);
//$obj2->work();

Führen Sie den obigen Code aus , und es wird die folgende Fehlermeldung angezeigt:

Schwerwiegender Fehler: Class Managers enthält 1 abstrakte Methode und muss daher als abstrakt deklariert werden oder die verbleibenden Methoden (Employees::work) in D:phproottestClassDemo.php in Zeile 26 implementieren

Ändern Sie die Position und das Ende der Fehleraufforderung. Nachdem der Positionscodekommentar gelöscht wurde, wird er in den folgenden Code geändert:

<?php
//抽象类像一个模板,供子类扩展(重写),抽象类里有普通方法(有方法体),也有抽象方法,其中抽象方法没有方法体,且以分号结束。
//只要有一个抽象方法,那么此类必须定义为抽象类。
//抽象类不能创建自己的实例,在试图创建抽象类对象时,会产生一个致使错误。
//在子类里实现抽象类的方法,并且可见性要等于、高于抽象方法的可见性,抽象类(public|protected|private),子类(public|public,protected|有致命错误,且不能被继承)。
//抽象类不能定义私有方法,可以定义私有属性。
//如果子类没有扩展(重写)抽象类的抽象方法,会产生致使错误。
abstract class Employees{
  protected $name = null;
  function __construct($nameStr){
    $this->name = $nameStr;
  }
  abstract public function work();
  public function work1(){
    echo "<p>$this->name</p>";
  }
  //function __destruct(){}
}
class Managers extends Employees{
  public function __construct($nameStr){
    parent::__construct($nameStr);
  }
  public function work(){//如果子类没有扩展(重写)抽象类的抽象方法,会产生致使错误。
    echo "<p>$this->name is working</p>";
  }
}
//$obj1 = new Employees();//创建抽象类对象时,会产生一个致使错误。
$obj2 = new Managers(&#39;e2&#39;);
$obj2->work();

Testlaufergebnis:

e2 funktioniert

Empfohlenes Lernen: „

PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas ist die Verwendung einer abstrakten Klasse in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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