Technologie d'interface PHP5
PHP, comme la plupart orientés objet langages de programmation , ne prend pas en charge l'héritage multiple. pour dire, chaque classe A ne peut hériter que d'une seule classe parent
. Afin de résoudre ce problème, PHP a introduit les interfaces. L'idée des interfaces est de spécifier une série de méthodes qu'une classe qui implémente l'interface doit
implémenter. L'interface est une classe abstraite spéciale , et la classe abstraite est une classe spéciale, donc l'interface est également une
classe spéciale Pourquoi l'interface est-elle dite être une classe abstraite spéciale ? Si toutes les méthodes d'une classe abstraite sont des
méthodes abstraites, alors nous modifions la méthode de déclaration pour utiliser "interface", c'est-à-dire que toutes les méthodes de l'interface doivent être
déclarées comme méthodes abstraites. être déclaré dans l'interface et tous les membres de l'interface disposent d'autorisations publiques.
Les sous-classes doivent donc également utiliser les autorisations publiques lors de l'implémentation.
Le mot-clé que nous utilisons lors de la déclaration d'une classe est "class", et l'interface est une classe spéciale, et le mot-clé
utilisé est "interface"
Définition de la classe : classe nom de la classe { … }, déclaration d'interface : interface interface name { … }
Extrait de code
<?php abstract class Demo{ var $test; abstract function fun1(); abstract function fun2(); function fun3(){ … . } } $demo=new Demo(); //抽象类为能产生实例对象,所以这样做是错的,实例化对象交给子类 class Test extends Demo{ function fun1(){ … } function fun2(){ … } } $test=new Test(); //子类可以实例化对象,因为实现了父类中所有抽象方法 ?>
Dans l'exemple ci-dessus, une interface "one" est définie, qui déclare deux méthodes abstraites "fun1" et "fun2" », car toutes les méthodes de l'interface sont des méthodes abstraites, donc lors de la déclaration de méthodes abstraites, vous n'avez pas besoin d'utiliser le mot-clé
« abstract » comme une classe abstraite. Ce mot-clé est déjà ajouté par défaut. L'autorisation d'accès "publique"
dans l'interface peut également être supprimée, car la valeur par défaut est publique, car tous les membres de l'interface doivent être publics, nous ne pouvons donc pas utiliser " Pour les autorisations « privées » et « protégées », utilisez public ou la valeur par défaut
. De plus, nous avons également déclaré une constante "constante" dans l'interface. Comme les variables ne peuvent pas être utilisées comme membres dans l'interface, nous devons utiliser la déclaration du mot clé const.
Parce que l'interface est une classe abstraite spéciale, toutes les méthodes qu'elle contient sont des méthodes abstraites, donc l'interface ne peut pas produire d'objets d'instance
c'est aussi une spécification, toutes les méthodes abstraites doivent être implémentées par des sous-classes .
Nous pouvons utiliser le mot-clé "extends" pour laisser une interface hériter d'une autre interface ;
Extrait de code
Et nous définissons une sous-classe d'une interface pour implémenter toutes les méthodes abstraites dans l'interface. le mot-clé est "implements", et
<?php //使用”extends”继承另外一个接口 interface Two extends One{ function fun3(); function fun4(); } ?>
Nous pouvons également utiliser des classes abstraites pour implémenter une partie de l'abstraction dans la méthode d'interface. , mais pour instancier un objet, cette classe abstraite
<?php //使用“implements”这个关键字去实现接口中的抽象方法 class Three implements One{ function fun1(){ … . } function fun2(){ … . } } //实现了全部方法,我们去可以使用子类去实例化对象了 $three=new Three(); ?>
, ce qui équivaut à ce qu'une classe doive se conformer à plusieurs spécifications. Tout comme nous devons non seulement respecter les lois du pays, mais si nous sommes à l'école, nous devons aussi le faire. respecter
Les règles de l'école sont les mêmes ;
Extraits de code
En PHP, non seulement une classe peut implémenter plusieurs interfaces, mais vous pouvez également implémenter plusieurs interfaces tout en héritant d'une classe. Vous devez
<?php //使用implements实现多个接口 class Four implemtns 接口一, 接口二, … .{ //必须把所有接口中的方法都要实现才可以实例化对象。 } ?>
<?php //使用extends继承一个类,使用implements实现多个接口 class Four extends 类名一implemtns 接口一, 接口二, … .{ //所有接口中的方法都要实现才可以实例化对象 … … … .. } ?>
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!