En PHP, les classes abstraites sont principalement utilisées pour masquer des types et servir de variables globales. Elles peuvent construire une description abstraite d'un ensemble fixe de comportements. Cet ensemble de comportements peut avoir n'importe quelle méthode d'implémentation spécifique possible, à condition qu'il y en ait une. dans la méthode class Abstract, cette classe est une classe abstraite.
L'environnement d'exploitation de cet article : système Windows 10, PHP version 7.1, ordinateur Dell G3.
Les classes abstraites sont souvent utilisées pour représenter des concepts abstraits dérivés de l'analyse et de la conception de domaines problématiques. Ce sont des abstractions d'une série de concepts spécifiques qui semblent différents mais sont essentiellement les mêmes.
La classe abstraite est incomplète, elle ne peut être utilisée que comme classe de base. Dans l'approche orientée objet, les classes abstraites sont principalement utilisées pour masquer les types et agir comme des variables globales.
Dans les méthodes orientées objet, les classes abstraites sont principalement utilisées pour le masquage de types. Construisez une description abstraite d’un ensemble fixe de comportements, mais cet ensemble de comportements peut avoir un certain nombre d’implémentations concrètes possibles. Cette description abstraite est la classe abstraite, et cet ensemble de toutes les implémentations concrètes possibles est représenté par toutes les classes dérivées possibles. Les modules peuvent fonctionner sur un corps abstrait. Puisque le module repose sur une abstraction fixe, il ne peut pas être modifié ; en même temps, en dérivant de cette abstraction, les fonctions comportementales de ce module peuvent également être étendues. L'exemple d'opération est le suivant :
<?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('e2'); //$obj2->work();
Exécutez le code ci-dessus. , et il affichera le message d'erreur suivant :
Erreur fatale : les gestionnaires de classes contiennent 1 méthode abstraite et doivent donc être déclarés abstraits ou implémenter les méthodes restantes (Employees::work) dans D:phproottestClassDemo.php à la ligne 26
Changez la position et la fin de l'invite d'erreur. Une fois le commentaire du code de position supprimé, il est remplacé par le code suivant :
<?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('e2'); $obj2->work();
Résultat du test en cours :
e2 fonctionne
Apprentissage recommandé : "
Tutoriel vidéo PHPCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!