Maison > développement back-end > tutoriel php > Explication détaillée des exemples de technologies d'interface orientée objet PHP

Explication détaillée des exemples de technologies d'interface orientée objet PHP

伊谢尔伦
Libérer: 2023-03-11 22:02:01
original
1226 Les gens l'ont consulté

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(); //子类可以实例化对象,因为实现了父类中所有抽象方法 
?>
Copier après la connexion

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

n'est pas le "extends" que nous avons mentionné plus tôt ;
<?php 
//使用”extends”继承另外一个接口 
interface Two extends One{ 
function fun3(); 
function fun4(); 
} 
?>
Copier après la connexion
extrait de code



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

doit avoir une sous-classe pour implémenter toutes ses méthodes abstraites
<?php 
//使用“implements”这个关键字去实现接口中的抽象方法 
class Three implements One{ 
function fun1(){ 
… . 
} 
function fun2(){ 
… . 
} 
} 
//实现了全部方法,我们去可以使用子类去实例化对象了 
$three=new Three(); 
?>
Copier après la connexion
Comme nous l'avons dit précédemment, PHP a un héritage unique, et une classe ne peut qu'avoir une classe parent, mais une classe peut implémenter plusieurs interfaces

, 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

hériter d'abord. La classe implémente ensuite l'
<?php 
//使用implements实现多个接口 
class Four implemtns 接口一, 接口二, … .{ 
//必须把所有接口中的方法都要实现才可以实例化对象。 
} 
?>
Copier après la connexion
extrait de code



<?php 
//使用extends继承一个类,使用implements实现多个接口 
class Four extends 类名一implemtns 接口一, 接口二, … .{ 
//所有接口中的方法都要实现才可以实例化对象 
… … … .. 
} 
?>
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal