Maison >développement back-end >tutoriel php >classe abstraite, interface, trait
Cet article concerne les classes abstraites, les interfaces et les traits en PHP. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent également lire le contenu de cet article pour référence
PHP 5 prend en charge les classes abstraites et les méthodes abstraites. Les classes définies comme abstraites ne peuvent pas être instanciées. Toute classe doit être déclarée abstraite si au moins une méthode qu'elle contient est déclarée abstraite. Et lors de l'héritage d'une classe abstraite, la sous-classe doit définir toutes les méthodes abstraites dans la classe parent (des constantes peuvent être définies dans la classe abstraite
Mot clé : abstrait) ;
<?php abstract class AbstractClass { const NAME='张三'; // 强制要求子类定义这些方法 abstract protected function getValue(); abstract protected function prefixValue($prefix); // 普通方法(非抽象方法) public function printOut() { print $this->getValue() . "\n"; } } class ConcreteClass1 extends AbstractClass { protected function getValue() { return "ConcreteClass1".self::NAME; } public function prefixValue($prefix) { return "{$prefix}ConcreteClass1"; } } $class1 = new ConcreteClass1; $class1->printOut(); echo $class1->prefixValue('FOO_') ."\n";
interface test1{ function say(); } interface test2{ function see(); } //接口继承接口 (继承接口时使用extends关键字) interface test3 extends test1,test2 { function sleep(); } //类实现接口(实现接口时使用 implements关键字) class test implements test1,test2{ public function say(){} public function see(){} public function sleep() { echo '休息'; } } //接口中只能有抽象方法(不能定义常量,不能有构造方法,不能有普通方法),且接口类中所有未实现的方法需要在子类中全部实现
Adresse de référence https://www.cnblogs.com/smallrookie/p/6516010.html
À partir de PHP 5.4.0, PHP implémente une nouvelle façon de réutiliser le code.
<?php trait A { public function smallTalk() { echo 'a'; } public function bigTalk() { echo 'A'; } } trait B { public function smallTalk() { echo 'b'; } public function bigTalk() { echo 'B'; } } class Aliased_Talker { use A, B { B::smallTalk insteadof A; //使用B类的smallTalk方法(替换A方法) A::bigTalk insteadof B; B::bigTalk as talk;//重命名 B类中的bigTalk方法重命名为talk方法 } } $obj = new Aliased_Talker; $obj->smallTalk(); //b $obj->bigTalk(); //A $obj->talk();//B //trait不能实例化,不能有常量Recommandations associées :
Exemples détaillés d'interface orientée objet PHP, d'héritage, de classes abstraites, de destruction, de clonage et d'autres fonctionnalités avancées
Première introduction à l'interface PHP
Partage des caractéristiques et des fonctions des Traits en PHP
Ce 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!