Maison développement back-end tutoriel php Explication graphique détaillée de l'interface des mots-clés et des implémentations en PHP

Explication graphique détaillée de l'interface des mots-clés et des implémentations en PHP

May 21, 2018 pm 02:54 PM
implements interface 关键字

Les classes PHP sont à héritage unique, c'est-à-dire qu'elles ne prennent pas en charge l'héritage multiple. Lorsqu'une classe nécessite les fonctions de plusieurs classes, l'héritage est impuissant. Pour cette raison, PHP introduit la technologie d'interface de classe. L'article suivant vous présente principalement les informations pertinentes sur l'interface des mots-clés et les implémentations en PHP. Les amis dans le besoin peuvent s'y référer.

Interface PHP

La classe PHP est à héritage unique, c'est-à-dire qu'elle ne prend pas en charge l'héritage multiple lorsqu'une classe nécessite plusieurs. classes Lorsqu'il s'agit de fonctions, l'héritage est impuissant, c'est pourquoi PHP introduit la technologie d'interface de classe.

Si toutes les méthodes d'une classe abstraite sont des méthodes abstraites et qu'aucune variable n'est déclarée, et que tous les membres de l'interface ont des autorisations publiques, alors cette classe abstraite spéciale est appelée une interface.

L'interface est définie à l'aide du mot-clé interface, et le mot-clé Implements est utilisé pour implémenter les méthodes dans l'interface, qui doivent être entièrement implémentées.

Application de l'interface en classe

1. Mot clé : interface

2. Mot clé : implémente

1. Introduction et création d'interfaces

Interface : une classe abstraite spéciale dont les attributs membres sont tous abstraits ou constants.

Règles :

1. Toutes les méthodes de la classe sont abstraites.

2. Il n'est pas nécessaire d'ajouter du résumé pour les méthodes abstraites.

3. L'attribut de méthode abstraite de l'interface est public.

4. Les attributs des membres doivent être des constantes.

Le code de format est le suivant :

interface demo { 
const NAME = "常量对象属性"; 
function fun1(); 
function fun2(); //抽象方法。 
}
Copier après la connexion

Application et spécification de l'interface

Les références d'interface sont différentes des extensions de mots-clés d'héritage de classe. L'héritage ne peut être qu'unique, tandis que les interfaces peuvent utiliser le mot-clé Implements pour avoir plusieurs références séparées par des virgules

Format : interface de référence de classe ordinaire

.

class MyPc implements demo , demo2 , demo3 { 
... 
}
Copier après la connexion

2. Format : Exemple d'interface d'application de classe abstraite

abstract class MyPc implements demo , demo2 , demo3 { 
... 
}
Copier après la connexion

3. Format : héritage Les interfaces de référence de la classe parent coexistent

class MyPc extends Root implements demo , demo2 , demo3 { 
... 
}
Copier après la connexion

d'abord puis l'interface, héritage unique de plusieurs interfaces.

4. Format : Interface et héritage d'interface

interface demo3 extends demo { 
... 
}
Copier après la connexion

L'exemple de code est le suivant :

<?php 
interface demo { 
 const NAME = "名称"; 
 function fun1(); 
 function fun2(); 
} 
interface demo2 { 
 function fun3(); 
 function fun4(); 
} 
interface demo3 { 
 const TEST = "Test"; 
 function fun5(); 
} 
class MyPc implements demo, demo2 { 
 function fun1() { 
 echo "++++++++++<br />"; 
 } 
 function fun2() { 
 echo "----------<br />"; 
 } 
 function fun3() { 
 echo "1111111111<br />"; 
 } 
 function fun4() { 
 echo "2222222222<br />"; 
 } 
} 
class MyPs extends MyPc implements demo3 { 
 function fun5() { 
 echo "继承类后引用接口"; 
 } 
} 
$p = new MyPs; 
$p->fun1(); 
$p->fun2(); 
$p->fun3(); 
$p->fun4(); 
$p->fun5(); 
?>
Copier après la connexion

Par exemple, l'interface est définie à l'aide du mot-clé interface, et le mot-clé Implements est utilisé pour implémenter les méthodes dans l'interface et doit être entièrement implémenté.

L'exemple de code est le suivant :

<?php 
//定义接口 
interface User{ 
 function getDiscount(); 
 function getUserType(); 
} 
//VIP用户 接口实现 
class VipUser implements User{ 
 // VIP 用户折扣系数 
 private $discount = 0.8; 
 function getDiscount() { 
  return $this->discount; 
 } 
 function getUserType() { 
  return "VIP用户"; 
 } 
} 
class Goods{ 
 var $price = 100; 
 var $vc; 
 //定义 User 接口类型参数,这时并不知道是什么用户 
 function run(User $vc){ 
  $this->vc = $vc; 
  $discount = $this->vc->getDiscount(); 
 $usertype = $this->vc->getUserType(); 
  echo $usertype."商品价格:".$this->price*$discount; 
 } 
} 
$display = new Goods(); 
$display ->run(new VipUser); //可以是更多其他用户类型 
?>
Copier après la connexion

Exécutez l'exemple, le résultat est :

Utilisateur VIP prix du produit : 80 yuans

Cet exemple démontre une application simple d'une interface PHP. Dans cet exemple, l'interface utilisateur implémente la remise de l'utilisateur et la classe VipUser implémente le coefficient de remise spécifique. Enfin, la catégorie de produits Biens implémente différents devis utilisateur basés sur l'interface utilisateur.

Cet exemple se limite à démontrer l'utilisation de l'interface PHP et n'implique pas son caractère scientifique.

Implémenter plusieurs interfaces

PHP peut également implémenter plusieurs interfaces en même temps lors de l'héritage d'une classe :

class 子类 extends 父类 implemtns 接口1, 接口2, ... 
{ 
 ...... 
}
Copier après la connexion

La différence entre les classes abstraites et les interfaces

Les interfaces sont des classes abstraites spéciales et peuvent également être considérées comme la spécification d'un modèle. La différence générale entre les interfaces et les classes abstraites est la suivante :

1. Si une sous-classe implémente une interface, elle doit implémenter toutes les méthodes de l'interface (qu'elles soient nécessaires ou non) ; il suffit d'implémenter la méthode Just the requise.

2. Si le nom de la méthode défini dans une interface change, alors toutes les sous-classes qui implémentent cette interface doivent mettre à jour le nom de la méthode de manière synchrone et si le nom de la méthode dans une classe abstraite change, le nom de la méthode correspondant à sa ; la sous-classe ne sera pas affectée, elle deviendra simplement une nouvelle méthode (par rapport à l'ancienne implémentation de la méthode).

3. Les classes abstraites ne peuvent être héritées que individuellement Lorsqu'une sous-classe doit implémenter des fonctions qui doivent être héritées de plusieurs classes parents, des interfaces doivent être utilisées.

<?php
//简单定义实现接口
interface UserInterface{ //定义user接口
 function getname();
}
interface TeacherInterface{ //定义teacher接口
 function getLengthofService();
}
class User implements UserInterface{ //实现user接口
 private $name="nostop";
 public function getName(){
  return $this->name;
 }
}
class Teacher implements TeacherInterface{ //实现teacher接口
 private $age=23;
 public function getLengthofService(){
  return $this->age;
 }
}
$user=new User();
echo $user->getName().&#39;<br />&#39;;//nostop
$teacher=new Teacher();
echo $teacher->getLengthofService().&#39;<br />&#39;;//23
//继承类实现接口
class GraduResultudent extends User implements TeacherInterface{ //继承User类 实现接口
 private $teacher;
 public function __construct(){  //定义构造函数
  $this->teacher=new Teacher(); //实例化Teacher对象
 }
 public function getLengthOfService(){ //实现TeacherInterface接口的方法
  return $this->teacher->getLengthOfService();
 }
}

class Result{
 public static function getUserName(UserInterface $_user){ //注意:这里面的类型变成接口类型
  echo "Name is ".$_user->getName().&#39;<br />&#39;;
 }
 public static function getLengthOfService(TeacherInterface $_teacher){ //注意:这里面的类型变成接口类型
  echo "age is ".$_teacher->getLengthOfService();
 }
}

$object=new GraduResultudent();
Result::getUserName($object); //Name is nostop
Result::getLengthOfService($object); //age is 23
echo "<br />";
//接口实现用户的折扣
interface People{ //定义接口
 function getUserType();
 function getCount();
}

class VipUser implements People{ //实现接口
 //用户折卡系数
 private $discount=0.8;
 function getUserType(){
  return "VIP用户";
 }
 function getCount(){
  return $this->discount;  
 }
}

$vip=new VipUser(); //实现化对象
echo $vip->getUserType().&#39;商品价格:&#39;.$vip->getCount()*100; //VIP用户商品价格:80

class Goods{
 var $price=100;
 var $member;
 function run(People $member){ //注意:这里面的参数类型是接口类型
  $this->member=$member;
  $discount=$this->member->getCount();
  $usertype=$this->member->getUserType();
  echo $usertype."商品价格:".$this->price*$discount;
 }
}
$display=new Goods();
$display->run(new VipUser);//VIP用户商品价格:80

?>
Copier après la connexion

Recommandations associées :

php associé Exemples détaillés d'utilisation des outils dans

Utilisation des outils dans php Explication détaillée

Instructions d'utilisation des outils 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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Analyse approfondie du rôle et de l'utilisation du mot-clé static en langage C Analyse approfondie du rôle et de l'utilisation du mot-clé static en langage C Feb 20, 2024 pm 04:30 PM

Analyse approfondie du rôle et de l'utilisation du mot-clé static en langage C. En langage C, static est un mot-clé très important, qui peut être utilisé dans la définition de fonctions, de variables et de types de données. L'utilisation du mot-clé static peut modifier les attributs de lien, la portée et le cycle de vie de l'objet. Analysons en détail le rôle et l'utilisation du mot-clé static en langage C. Variables et fonctions statiques : les variables définies à l'aide du mot-clé static à l'intérieur d'une fonction sont appelées variables statiques et ont un cycle de vie global.

Go est-il un mot-clé en langage C ? Analyse détaillée Go est-il un mot-clé en langage C ? Analyse détaillée Mar 16, 2024 am 10:30 AM

Titre : Go est-il un mot-clé en langage C ? Analyse détaillée En langage C, "go" n'est pas un mot-clé. Les mots-clés en langage C sont spécifiés par le standard C et sont utilisés pour représenter des structures ou des fonctions grammaticales spécifiques. Ils ont des significations particulières dans le compilateur et ne peuvent pas être utilisés comme identifiants ou noms de variables. Par exemple, le mot clé « int » représente un type de données entier, « if » représente une instruction conditionnelle, etc. Si nous voulons vérifier si « go » est un mot-clé en langage C, nous pouvons écrire un programme simple pour le tester. Voici un exemple : #inc

Une compréhension approfondie de l'interface de décryptage du langage Go Une compréhension approfondie de l'interface de décryptage du langage Go Aug 08, 2023 pm 04:37 PM

Dans la sémantique du langage Go, tant qu'un type implémente un ensemble défini de méthodes, il est considéré comme le même type et la même chose. Les gens l’appellent souvent typage de canard car il est relativement cohérent avec la définition du typage de canard.

Le rôle et les exemples du mot-clé var en PHP Le rôle et les exemples du mot-clé var en PHP Jun 28, 2023 pm 08:58 PM

Le rôle et les exemples du mot-clé var en PHP En PHP, le mot-clé var permet de déclarer une variable. Dans les versions précédentes de PHP, l'utilisation du mot-clé var était la manière idiomatique de déclarer les variables membres, mais son utilisation n'est plus recommandée. Cependant, dans certains cas, le mot-clé var est toujours utilisé. Le mot-clé var est principalement utilisé pour déclarer une variable locale et marquer automatiquement la variable comme portée locale. Cela signifie que la variable n'est visible que dans le bloc de code actuel et n'est pas accessible dans d'autres fonctions ou blocs de code. Utiliser var

Comment PHP8 utilise-t-il l'interface Stringable pour gérer différents types de chaînes ? Comment PHP8 utilise-t-il l'interface Stringable pour gérer différents types de chaînes ? Oct 18, 2023 am 11:33 AM

Comment PHP8 utilise-t-il StringableInterface pour gérer différents types de chaînes ? PHP8 introduit une nouvelle interface Stringable, qui peut aider les développeurs à traiter plus facilement différents types de chaînes. Dans le passé, nous utilisions généralement la fonction is_string() pour déterminer si une variable est de type chaîne, puis effectuions les opérations correspondantes. Désormais, avec l'interface Stringable, nous pouvons gérer les chaînes de manière plus intuitive sans avoir à déterminer leur type.

Est-ce que while est un mot-clé dans le langage go ? Est-ce que while est un mot-clé dans le langage go ? Jun 04, 2021 pm 05:01 PM

Dans le langage Go, while n'est pas un mot-clé. Vous pouvez utiliser l'instruction for plus break pour obtenir l'effet d'une boucle while, telle que "for {sum++ if sum>10{break}else{...}}". Le langage go contient 25 mots-clés tels que break, default, func, select, case, defer, go, map, else, goto, for, if, var, etc.

Combien de mots-clés y a-t-il en langage C ? Combien de mots-clés y a-t-il en langage C ? Nov 22, 2022 pm 03:39 PM

Il existe 32 mots-clés en langage C. Selon la fonction des mots-clés, ils peuvent être divisés en quatre catégories : mots-clés de type de données, mots-clés d'instructions de contrôle, mots-clés de type de stockage et autres mots-clés. Il existe 12 mots-clés de type de données, dont char, double, float, int, etc. ; il existe 12 mots-clés d'instruction de contrôle, dont for, break, if, else, do, etc. ; il existe 4 mots-clés de type de stockage, dont auto, static , extern, etc. ; il y a 4 autres mots-clés, dont const, sizeof, etc.

Comment convertir le type d'interface en Golang Comment convertir le type d'interface en Golang Mar 22, 2023 pm 02:23 PM

L'interface du langage Go est un type très spécial qui peut extraire n'importe quel type de données avec certaines caractéristiques et effectuer une conversion de type. Cette fonctionnalité fait que l'interface joue un rôle très important dans le langage Go, mais la conversion du type d'interface est également un problème relativement complexe qui nous oblige à discuter et à comprendre attentivement.

See all articles