Table des matières
Orienté objet " >Orienté objet
Maison développement back-end tutoriel php Explication détaillée de ma compréhension de l'orientation objet en PHP

Explication détaillée de ma compréhension de l'orientation objet en PHP

Jul 03, 2017 am 09:33 AM
php 对象

Avant-propos :

Aujourd'hui, je vais vous présenter la nature orientée objet de PHP. En parlant d'orientation objet, je dois mentionner l'orientation processus, car lorsque j'étais débutant, je ne pouvais souvent pas faire la différence. Alors, quelle est la différence entre l’orienté objet et l’orienté processus ? Laissez-moi vous donner une brève introduction ci-dessous :

Orienté objet Concentrez-vous sur quel objet gère un problème.

Sa plus grande caractéristique est qu'il se compose de classes avec des attributs et des fonctions, et que des objets peuvent être obtenus à partir des classes pour résoudre des problèmes.

Orienté processus Se concentrer sur le processus de résolution d'un problème. La plus grande caractéristique est qu'une série de processus sont utilisés pour résoudre ce problème un par un.

Après avoir compris la différence entre orienté objet et orienté processus, apprenons les connaissances de base du PHP orienté objet.

***Mots-clés de ce chapitre : Bases orientées objet, encapsulation et héritage, mots-clés PHP, singletons, sérialisation d'objets et magie méthodes, classes abstraites et méthodes abstraites, interfaces et polymorphisme.

Ce que vous devez savoir~~~ Il y a trois caractéristiques majeures du PHP orienté objet que nous devons connaître : l'héritage ;

一、面向对象基础
1. Bases orientées objet

Orienté objet

1. Qu'est-ce qu'un cours ?
Une collection d'une série d'individus ayant les mêmes attributs (caractéristiques) et méthodes (comportement). Une classe est un concept abstrait.

2. Qu'est-ce qu'un objet ?
L'individu avec des valeurs d'attribut spécifiques obtenues à partir de la classe est appelé un objet. L'objet est un individu spécifique.
par exemple : humain Zhang San

3. Quelle est la relation entre les classes et les objets ?
Une classe est une abstraction d'un objet ! Les objets sont la réification des classes !
La classe indique uniquement les attributs de ce type d'objet, mais elle ne peut pas avoir de valeurs spécifiques, la classe est donc abstraite.
L'objet est un individu spécifique après avoir attribué tous les attributs de la classe.

2. Déclaration et instanciation de classe
1. Comment déclarer une classe :
classe nom de classe {
Modificateur d'accès $property[=default];
Méthode de fonction [Modificateur d'accès](){}
}

2. Choses à noter lors de la déclaration d'une classe :
① Le nom de la classe ne peut être composé que de lettres, de chiffres et de traits de soulignement. Il ne peut pas commencer par un chiffre et doit être conforme. avec la règle du gros chameau. ;
②Le nom de la classe doit être modifié avec la classe, et il ne doit pas y avoir de () après le nom de la classe ;
③Les attributs doivent avoir les modificateurs d'accès et les méthodes peuvent être sans modificateur d'accès.

3. Appel d'objets instanciés et de méthodes d'attribut d'objet :
$object name = new class name ( //() peut être omis

Appeler des propriétés et des méthodes depuis l'extérieur de la classe :
$object name-> $property name; le nom de la propriété Le symbole $ ne peut pas être utilisé

pour appeler des attributs et des méthodes au sein de la classe :
$this -> >

3. Constructeur

1. Qu'est-ce qu'un constructeur ?
Le constructeur est une fonction spéciale dans une classe. Lorsque l'on utilise le mot-clé new pour instancier un objet, cela équivaut à appeler le constructeur de la classe.

2. Quelle est la fonction du constructeur ?

Lors de l'instanciation d'un objet, celui-ci est automatiquement appelé et utilisé pour attribuer des valeurs initiales aux propriétés de l'objet !

3. Comment écrire le constructeur :
①Le nom du constructeur doit être le même que le nom de la classe
[public] fonction Personne ($name){
$this -> name = $name;
}
②Utilisez la méthode magique __construct
[public] function __construct($name){
$this -> nom = $name;
}
4. Notes sur les constructeurs :
① La première façon d'écrire, le nom du constructeur doit être le même que la classe ! ! ! !
②Si une classe n'a pas de constructeur manuscrit, le système aura un constructeur de paramètre vide par défaut, vous pouvez donc utiliser new Person();
Si nous écrivez un constructeur avec Parameter constructor, il n'y aura plus de constructeur de paramètres vide, c'est-à-dire que new Person() ne peut pas être utilisé directement
La liste de paramètres dans () après Person doit répondre aux exigences ; du constructeur ! ! ! !
③Si les deux constructeurs existent en même temps, __construct sera utilisé.

5. Destructeur : __destruct() :
①Le destructeur est automatiquement appelé avant que l'objet ne soit détruit et libéré
②Le destructeur ne peut prendre aucun paramètre ;
③Le destructeur est souvent utilisé pour libérer des ressources, fermer des ressources, etc. après l'utilisation de l'objet.

6. Méthode magique :
PHP nous fournit une série de fonctions commençant par __. Ces fonctions n'ont pas besoin d'être appelées manuellement, sera automatiquement appelé au bon moment. Ce type de fonction est appelé magie et s'appelle une fonction magique.
par exemple : la fonction __construct(){} est automatiquement appelée lorsqu'un nouvel objet est créé
la fonction __destruct(){} est automatiquement appelée lorsque l'objet est détruit
🎜>
Nous exigeons que, à l'exception des méthodes magiques, les fonctions et méthodes personnalisées ne puissent pas commencer par __.

Enfin, généralement pour les classes avec des fonctions plus complexes, nous les écrirons dans un fichier de classe séparé.
Nommez le fichier de classe dans la même casse, utilisez la méthode "nom de classe lowercase.class.php".
Lorsque vous utilisez cette classe dans d'autres fichiers, vous pouvez utiliser include pour importer ce fichier ".class.php".

2. Encapsulation et héritage
二、封装和继承

1. Qu'est-ce que l'encapsulation ?
Utilisez des modificateurs d'accès pour privatiser les propriétés et les méthodes de la classe qui ne nécessitent pas d'accès externe pour réaliser le contrôle d'accès.

*Remarque : Il s'agit de mettre en œuvre le contrôle d'accès, et non de refuser l'accès. En d'autres termes, après avoir privatisé les attributs, nous devons fournir les méthodes correspondantes afin que les utilisateurs puissent traiter les attributs via les méthodes que nous fournissons.

2. Quel est le rôle de l'encapsulation ?
① Les utilisateurs ne se soucient que des fonctions que la classe peut fournir et ne se soucient pas des détails de l'implémentation des fonctions ! (Méthode d'encapsulation)
② Contrôlez les données de l'utilisateur, empêchez la définition de données illégales et contrôlez les données renvoyées à l'utilisateur (encapsulation d'attribut + méthode set/get)

3. Mettre en œuvre l'opération d'encapsulation ?
①Encapsulation de méthode
Pour certaines méthodes qui ne sont utilisées qu'à l'intérieur de la classe et ne sont pas fournies pour un usage externe, nous pouvons alors utiliser private pour de telles méthodes Processus de privatisation.
fonction privée formatName(){} //Cette méthode ne peut être utilisée qu'au sein de la classe utilisant $this pour appeler la
fonction showName(){
$this -> formatName();
}
②Encapsulation d'attribut + méthode set/get
Dans afin de contrôler Pour la définition et la lecture des attributs, vous pouvez privatiser les attributs et demander aux utilisateurs de les définir via les méthodes set/get que nous fournissons
private $age;
function setAge($age){
$this->age=$age;
}
function getAge(){
return $this->age;
}
$object->getAge();
$Object->setAge(12);

③Encapsulation d'attribut + méthode magique
private $age;
fonction __get($key){
return $this->$key;
}
fonction __set( $key,$value){
$this->$key=$value;
}
$ objet -> ;age; //Lors de l'accès aux propriétés privées de l'objet, la méthode magique __get() est automatiquement appelée et le nom de la propriété accédée est transmis à la méthode __get()
$Object- ; > age=12; //Lors de la définition des attributs privés de l'objet, la méthode magique __set() est automatiquement appelée et le nom et la valeur de l'attribut définis sont transmis à la méthode __set() ; > Remarque : Dans la méthode magique, vous pouvez utiliser la structure de branche pour déterminer la différence entre $key et effectuer différentes opérations.

4. Concernant la méthode magique d'encapsulation :
①__set($key,$value) : Appelé automatiquement lors de l'attribution d'une valeur à une propriété privée de classe, en passant deux paramètres à la méthode lors de l’appel : le nom et la valeur de l’attribut qui doivent être définis.
②__get($key,$value) : Appelé automatiquement lors de la lecture des attributs privés de la classe lors de l'appel, passez un paramètre à la méthode, le nom de l'attribut qui doit être lu ;
③__isset($key) : automatiquement appelé lorsque la fonction isset() est utilisée en externe pour détecter des attributs privés.
>>> Utilisez isset(); en dehors de la classe pour détecter les propriétés privées, qui ne sont pas détectées par défaut. false
>>>Nous pouvons donc utiliser la fonction __isset(); pour renvoyer le résultat de la détection interne lorsqu'elle est automatiquement appelée.
fonction __isset($key){
return isset($this -> $key);
}
Lorsque isset externe ($object name->private attribut); est utilisé pour la détection, le résultat renvoyé par __isset() ci-dessus sera automatiquement appelé !

④__unset($key) : automatiquement appelée lorsque la fonction unset() est utilisée en externe pour supprimer des attributs privés ;
function __unset($key){
non défini($this -> $key);
}
Lorsque non défini($nom de l'objet->propriété privée est utilisé en externe ); Lors de la suppression d'un attribut, le nom de l'attribut est automatiquement transmis à __unset() et transmis à cette méthode magique pour traitement.


[Connaissances de base en matière d'héritage]
1.Comment mettre en œuvre l'héritage ?
Utilisez le mot-clé extends pour la sous-classe pour permettre à la sous-classe d'hériter de la classe parent ;
class Student extends Person{}

2. Choses à noter lors de la mise en œuvre de l'héritage ?
①Les sous-classes ne peuvent hériter que des propriétés non privées de la classe parent.
②Après qu'une sous-classe hérite d'une classe parent, cela équivaut à copier les attributs et les méthodes de la classe parent dans la sous-classe, qui peut être appelée directement en utilisant $this.
③PHP ne peut hériter que d'une seule classe et ne prend pas en charge une classe héritant de plusieurs classes. Mais une classe possède plusieurs niveaux d’héritage.
classe Personne{}
classe Adulte étend la personne{}
classe Étudiant étend l'adulte{}
//La classe Étudiant a les attributs et les méthodes de la classe Adulte et de la classe Personne

3. Couverture des méthodes (réécriture de méthodes)
. Première condition : la sous-classe hérite de la classe parent
Deuxième condition : la sous-classe remplace la méthode existante de la classe parent

qui remplit les deux conditions ci-dessus, ce qu'on appelle le remplacement de méthode. Après le remplacement, lorsqu'une sous-classe appelle une méthode, la propre méthode de la sous-classe sera appelée.
De même, en plus des remplacements de méthodes, les sous-classes peuvent également avoir des attributs portant le même nom que la classe parent pour les remplacements d'attributs.

Si la sous-classe remplace la méthode de la classe parent, comment appeler la méthode de la classe parent du même nom dans la sous-classe ?

partent::method name();
Par conséquent, lorsqu'une sous-classe hérite d'une classe parent, cela doit être la première étape de la construction de la sous-classe, appelez d'abord le constructeur de la classe parent pour copier.

fonction __construct($nom,$sexe,$école){
partent::__construct($nom,$sexe);
$this -> école = $école;
}

三、PHP关键字

1. final
①classe finale modifiée, cette classe est la classe finale et ne peut pas être héritée !
②méthode de modification finale, cette méthode est la méthode finale et ne peut pas être remplacée !
③final ne peut pas modifier les attributs.

2. static
① peut modifier les attributs et les méthodes, qui sont respectivement appelés attributs statiques et méthodes statiques, également appelés attributs de classe et méthodes de classe
②Les propriétés statiques et les méthodes statiques ne peuvent être appelées que directement en utilisant le nom de la classe.
Utilisez "nom de classe ::$propriété statique", "nom de classe ::méthode statique()"
Personne ::$sex ; );
③Les propriétés et méthodes statiques seront déclarées lors du chargement de la classe, avant la génération de l'objet.
④ Dans les méthodes statiques, les propriétés ou méthodes non statiques ne peuvent pas être appelées ;
Dans les méthodes non statiques, les propriétés et méthodes statiques peuvent être appelées ;
(Étant donné que les attributs et méthodes statiques ont été générés lors du chargement de la classe, les méthodes d'attributs non statiques n'ont pas encore été instanciées)
⑤Dans la classe, vous pouvez utilisez le mot-clé self pour faire référence au nom de cette classe.
classe Personne{
static $sex = "nan";
function say(){
echo self::$sex;
}
}
⑥Les propriétés statiques sont partagées, c'est-à-dire que les nouvelles produisent beaucoup Les objets partagent également une propriété.

3. mot-clé const :
Déclarez les constantes dans la classe, pas la fonction définir() ! Le mot clé const doit être utilisé.
Semblable à l'instruction definition(), le mot-clé const ne peut pas être utilisé pour déclarer des constantes avec $, et doit être entièrement en majuscule !
Une fois qu'une constante est déclarée, elle ne peut plus être modifiée. Lors de l'appel, tout comme statique, utilisez le nom de la classe pour appeler Person::constant.

4. Opérateur instanceof :
Détecte si un objet est une instance d'une certaine classe. (Y compris les pères, grands-parents, arrière-grands-pères...)
$zhangsan instanceof Person;

[Court résumé] Plusieurs opérateurs spéciaux
1. ne peut connecter que des chaînes ; "".""
2 => value"]
3. -> L'objet (objet de $this new) appelle les propriétés des membres et les méthodes des membres ;
4. ::
①Utilisez le mot-clé parent pour appeler la méthode du même nom dans la classe parent : parent::say();
②Utilisez le nom de la classe (et self) pour appeler la méthode statique dans la classe Propriétés, méthodes statiques et constantes.

4. Singleton
四、单例

Le mode singleton est également appelé mode monomorphe.
Il est garanti qu'une classe ne peut avoir qu'une seule instance d'objet.

Points d'implémentation :
① Le constructeur est privé et le mot-clé new ne peut pas être utilisé pour créer des objets.
② Fournissez des méthodes externes pour obtenir des objets et déterminez si l'objet est vide dans la méthode.
S'il est vide, créez l'objet et renvoyez-le ; s'il n'est pas vide, renvoyez-le directement.
③Les attributs de l'objet instance et la méthode d'obtention de l'objet doivent être statiques.
④ Après cela, les objets ne peuvent être créés qu'en utilisant les méthodes statiques que nous fournissons.
par exemple :$s1 = Singleton::getSingle();

5. Sérialisation d'objets et méthodes magiques
五、对象串行化和魔术方法

***Mots clés : clone et __clone, __antoload(), sérialisation et désérialisation (sérialisation et désérialisation), contraintes de type, méthode magique small Résumé (12)


1. clone et __clone
1 Lorsque vous utilisez = pour parler d'un objet et l'attribuer à un autre objet, ce qui est attribué est en fait l'adresse de l'objet. .
Deux objets pointent vers la même adresse, donc si un objet change, l'autre changera également.
par exemple : $lisi = $zhangsan;
2 Si vous souhaitez cloner complètement un objet à partir d'un autre objet, les deux objets sont indépendants et indépendants l'un de l'autre. autre. Pour les interférences,
doit utiliser le mot-clé clone
par exemple : $lisi = clone $zhangsan ; //Les deux objets n'interfèrent pas l'un avec l'autre ;
3. __clone() :
① Lorsque vous utilisez le mot-clé clone pour cloner un objet, la fonction clone est automatiquement appelée. La fonction
②__clone(), similaire au constructeur utilisé lors du clonage, peut attribuer une valeur initiale au nouvel objet cloné.
③$this dans la fonction __clone() fait référence à l'objet nouvellement cloné
Dans certaines versions, vous pouvez utiliser $that pour faire référence à l'objet cloné In. dans la plupart des cas, non pris en charge par la plupart des versions.
4. __toString()
Lorsque vous utilisez echo et d'autres instructions de sortie pour imprimer directement des objets, appelez echo $zhangsan;
Ensuite , Vous pouvez spécifier la chaîne renvoyée par la fonction __toString() ;
function __toString(){
return "haha";
}
echo $zhangsan; //Le résultat est : haha

5. définie dans la classe appelante ou la méthode non divulguée, la méthode __call() sera automatiquement exécutée.
Lorsqu'ils sont exécutés automatiquement, deux paramètres seront transmis à la méthode __call()
Paramètre 1 : Le nom de la méthode appelée
Paramètre deux : (tableau) liste des paramètres de la méthode appelante.
2. __antoload()

①C'est la seule méthode magique qui n'est pas utilisée dans une classe
②Quand Lors de l'instanciation d'une classe inexistante, cette méthode magique est automatiquement appelée
③Lorsqu'elle est appelée, un paramètre est automatiquement passé à __autoload() : le nom de la classe instanciée
Vous pouvez donc utiliser cette méthode pour implémenter la fonction de chargement automatique des fichiers.
fonction __autoload($className){
include "class/".strtolower($className).".class.php";
}
$zhangsan=new Person();//Il n'y a pas de classe Person dans ce fichier, et __autoload() sera automatiquement exécuté pour charger le fichier person.class.php

3. Sérialisation et désérialisation (sérialisation et désérialisation)
1. Sérialisation : convertir l'objet en caractère via une série d'opérations. Le processus de chaîne est appelé sérialisation ; >
(les objets s'enregistrent en écrivant des valeurs décrivant leur statut)
2. Désérialisation : Le processus de conversion d'une chaîne sérialisée en objet est appelé désérialisation ; 3. Quand faut-il utiliser la sérialisation ?
①Quand des objets doivent être transmis sur le réseau
②Quand des objets doivent être conservés dans des fichiers ou des bases de données
4. implémenter la sérialisation et la désérialisation
Sérialisation : $str=serialize($zhangsan);
Désérialisation : $duixiang=unserialize ($str);
5. Méthode magique __sleep() :
① Lorsque l'objet est sérialisé, la fonction __sleep() sera automatiquement exécutée
②__sleep() ; nécessite de renvoyer un tableau. Les valeurs du tableau sont des attributs qui peuvent être sérialisés ; les attributs qui ne sont pas dans le tableau ne peuvent pas être sérialisés ;
return array("name","age"); //Seuls les deux attributs nom/âge peuvent être sérialisés.
}
6. Méthode magique __wakeup()
① Appelée automatiquement lors de la désérialisation d'une méthode object_ _wakeup() ;

②Lorsqu'il est automatiquement appelé, il est utilisé pour réaffecter les nouveaux attributs d'objet générés par la désérialisation.
fonction __wakeup(){
$this -> name = "李思";
}
4. Contraintes de type
1. Contraintes de type : fait référence à l'ajout d'un type de données à une variable pour contraindre la variable à stocker uniquement le type de données correspondant.

(Cette opération est courante dans les langages fortement typés. En PHP, seules les contraintes de type pour les tableaux et les objets peuvent être implémentées)
2. certaine classe, alors les objets de cette classe et les sous-classes de cette classe peuvent passer.
3. En PHP, les contraintes de type ne peuvent apparaître que dans les paramètres formels des fonctions.
class Person{}
class Student extends Person{}
function func(Person $p){ //Fonction de contrainte formelle paramètres, n'acceptez que la classe Person et la sous-classe Person
echo "1111";
echo $p -> name;
}
func(nouvelle personne()); √
func(nouvel étudiant()); √
func(" 111"); ※Classe de base : classe parent
※※※ Classe dérivée : sous-classe

5. Résumé des méthodes magiques
1. __construct() : Constructeur, automatiquement appelé lors de la création d'un objet.
2. __destruct() : destructeur, appelé automatiquement avant la destruction d'un objet.
3. __get() : automatiquement appelé lors de l'accès aux propriétés privées de la classe. Passez le nom de l'attribut lu et renvoyez $this->Nom de l'attribut
4 __set() : automatiquement appelé lors de l'attribution d'une valeur à un attribut privé de la classe. Transmettez le nom de l'attribut et la valeur de l'attribut qui doivent être définis ;
5. __isset() : automatiquement appelé lors de l'utilisation d'isset() pour détecter les attributs privés de l'objet. Transmettez le nom de l'attribut détecté et retournez isset($this -> nom de l'attribut);
6. __unset() : automatiquement appelé lors de l'utilisation d'unset() pour supprimer les attributs privés de l'objet. Transmettez le nom de l'attribut supprimé et exécutez unset($this -> nom de l'attribut);
7 __toString() : automatiquement appelé lors de l'utilisation de echo pour imprimer l'objet. Renvoie le contenu que vous souhaitez afficher lors de l'impression de l'objet ; le retour doit être une chaîne
8. __call() : Appelé automatiquement lors de l'appel d'une méthode non définie ou non publiée dans une classe. Transmettez le nom de la fonction appelée et le tableau de la liste des paramètres ;
9. __clone() : automatiquement appelé lors du clonage d'un objet à l'aide du mot-clé clone. La fonction consiste à initialiser et à attribuer des valeurs à l'objet nouvellement cloné ;
10. __sleep() : automatiquement appelé lorsque l'objet est sérialisé. Renvoie un tableau, et les valeurs du tableau sont des attributs qui peuvent être sérialisés ;
11 __wakeup() : automatiquement appelé lorsque l'objet est désérialisé. Pour désérialiser l'objet nouvellement généré, effectuez une affectation d'initialisation ;
12. __autoload() : La fonction doit être déclarée en dehors de la classe. Appelé automatiquement lorsqu'une classe non déclarée est instanciée. En transmettant le nom de classe instancié, le fichier de classe correspondant peut être automatiquement chargé en utilisant le nom de classe.

6. Classes abstraites et méthodes abstraites
六、抽象类和抽象方法

1. Qu'est-ce qu'une méthode abstraite ?
Les méthodes sans corps de méthode {} doivent être modifiées avec le mot-clé abstract. De telles méthodes sont appelées méthodes abstraites.
fonction abstraite say(); //Méthode abstraite

2.
Une classe modifiée avec le mot-clé abstract est une classe abstraite.
classe abstraite Personne{}

3. Notes sur les classes abstraites :
① Les classes abstraites peuvent contenir des éléments non abstraits. classes Méthode ;
② La classe contenant la méthode abstraite doit être une classe abstraite, et la classe abstraite ne doit pas nécessairement contenir une méthode abstraite
③ La classe abstraite ne peut pas être ; instancié. (Les classes abstraites peuvent contenir des méthodes abstraites. Les méthodes abstraites n'ont pas de corps de méthode et les appels d'instanciation n'ont aucun sens)
Le but de l'utilisation de classes abstraites est de limiter l'instanciation ! ! !

4. Si une sous-classe hérite d'une classe abstraite, alors la sous-classe doit remplacer toutes les méthodes abstraites de la classe parent, sauf si la sous-classe est également une classe abstraite.

5. Quel est le rôle de l'utilisation de classes abstraites ?
① Limiter l'instanciation. (Une classe abstraite est une classe incomplète. La méthode abstraite à l'intérieur n'a pas de corps de méthode, elle ne peut donc pas être instanciée)
② La classe abstraite fournit une spécification pour l'héritage des sous-classes, et les sous-classes héritent d'une abstraction La classe doit contenir et implémenter les méthodes abstraites définies dans la classe abstraite.

7. Interfaces et polymorphisme
七、接口与多态

1.Interface
1. Qu'est-ce qu'une interface ?
Une interface est une spécification qui fournit un ensemble de combinaisons de méthodes qui doivent être implémentées par une classe qui implémente l'interface.
L'interface est déclarée à l'aide du mot-clé interface ;
interface Inter{}

2. Doit Ce sont toutes des méthodes abstraites.
Les méthodes abstraites dans les interfaces n'ont pas besoin et ne peuvent pas être modifiées avec abstract.

3. Les variables ne peuvent pas être déclarées dans l'interface, et il ne peut pas y avoir d'attributs. Seules les constantes peuvent être utilisées ! ! !

4. Les interfaces peuvent hériter des interfaces, en utilisant le mot-clé extends ! L'interface
utilise l'interface extends pour implémenter l'héritage multiple.
interface int1 étend Inter,Inter2{}

5. Les classes peuvent implémenter des interfaces, en utilisant le mot-clé Implements !
La classe utilise des implémentations pour implémenter l'interface, qui peut implémenter plusieurs interfaces en même temps. Plusieurs interfaces sont séparées par des virgules
classe abstraite Person implémente Inter, Inter2{}
Une classe implémente une ou plusieurs interfaces, alors cette classe doit implémenter toutes les méthodes abstraites dans toutes les interfaces !
À moins que cette classe soit une classe abstraite.

※[Différence entre l'interface et la classe abstraite]
1 En termes de méthode de déclaration, les interfaces utilisent le mot-clé interface et les classes abstraites utilisent la classe abstraite.
2. En termes d'implémentation/d'héritage, une classe utilise extends pour hériter d'une classe abstraite et implémente pour implémenter l'interface.
3. Les classes abstraites ne peuvent être héritées qu'individuellement, tandis que les interfaces peuvent être implémentées de plusieurs manières. (L'interface étend l'interface), implémentations multiples (la classe implémente l'interface)
4. Les classes abstraites peuvent avoir des méthodes non abstraites, et les interfaces ne peuvent avoir que des méthodes abstraites, pas des méthodes abstraites.
Les méthodes abstraites dans les classes abstraites doivent être modifiées avec le mot-clé abstract, et les méthodes abstraites dans les interfaces ne peuvent pas être modifiées avec des modificateurs.
5. Une classe abstraite est une classe qui peut avoir des attributs et des variables ; une interface ne peut avoir que des constantes.

2. Polymorphisme
1. Une classe est héritée par plusieurs sous-classes.
Si une méthode de cette classe affiche différentes fonctions dans plusieurs sous-classes, nous appelons cela polymorphisme de comportement.

2. Moyens nécessaires pour obtenir le polymorphisme :
① La sous-classe hérite de la classe parent
② La sous-classe réécrit la classe ; méthode de classe parent ;
③ La référence de la classe parent pointe vers l'objet de sous-classe


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

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

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)

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

7 fonctions PHP que je regrette de ne pas connaître auparavant 7 fonctions PHP que je regrette de ne pas connaître auparavant Nov 13, 2024 am 09:42 AM

Si vous êtes un développeur PHP expérimenté, vous aurez peut-être le sentiment d'y être déjà allé et de l'avoir déjà fait. Vous avez développé un nombre important d'applications, débogué des millions de lignes de code et peaufiné de nombreux scripts pour réaliser des opérations.

Comment analysez-vous et traitez-vous HTML / XML dans PHP? Comment analysez-vous et traitez-vous HTML / XML dans PHP? Feb 07, 2025 am 11:57 AM

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Apr 05, 2025 am 12:04 AM

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Programme PHP pour compter les voyelles dans une chaîne Programme PHP pour compter les voyelles dans une chaîne Feb 07, 2025 pm 12:12 PM

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

Expliquez la liaison statique tardive en PHP (statique: :). Expliquez la liaison statique tardive en PHP (statique: :). Apr 03, 2025 am 12:04 AM

Liaison statique (statique: :) ​​implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Quelles sont les méthodes PHP Magic (__construct, __ destruct, __ call, __get, __set, etc.) et fournir des cas d'utilisation? Quelles sont les méthodes PHP Magic (__construct, __ destruct, __ call, __get, __set, etc.) et fournir des cas d'utilisation? Apr 03, 2025 am 12:03 AM

Quelles sont les méthodes magiques de PHP? Les méthodes magiques de PHP incluent: 1. \ _ \ _ Construct, utilisé pour initialiser les objets; 2. \ _ \ _ Destruct, utilisé pour nettoyer les ressources; 3. \ _ \ _ Appel, gérer les appels de méthode inexistants; 4. \ _ \ _ GET, Implémentez l'accès à l'attribut dynamique; 5. \ _ \ _ SET, Implémentez les paramètres d'attribut dynamique. Ces méthodes sont automatiquement appelées dans certaines situations, améliorant la flexibilité et l'efficacité du code.

See all articles