Qu'est-ce qu'une classe abstraite en PHP?
Comment peut-il être utilisé?
php
oop
abstract-class
udaya
la source
la source
Réponses:
Une classe abstraite est une classe qui contient au moins une méthode abstraite, qui est une méthode sans aucun code réel, juste le nom et les paramètres, et qui a été marquée comme "abstraite".
Le but est de fournir une sorte de modèle à hériter et de forcer la classe héritière à implémenter les méthodes abstraites.
Une classe abstraite est donc quelque chose entre une classe régulière et une interface pure. Les interfaces sont également un cas particulier de classes abstraites où TOUTES les méthodes sont abstraites.
Voir cette section du manuel PHP pour plus de références.
la source
1. Impossible d'instancier une classe abstraite : les classes définies comme abstraites ne peuvent pas être instanciées, et toute classe qui contient au moins une méthode abstraite doit également être abstraite.
Exemple ci-dessous:
2. Toute classe qui contient au moins une méthode abstraite doit également être abstraite : la classe abstraite peut avoir des méthodes abstraites et non abstraites, mais elle doit contenir au moins une méthode abstraite. Si une classe a au moins une méthode abstraite, alors la classe doit être déclarée abstraite.
Exemple ci-dessous:
3. Une méthode abstraite ne peut pas contenir de corps : les méthodes définies comme abstraites déclarent simplement la signature de la méthode - elles ne peuvent pas définir l'implémentation. Mais une méthode non abstraite peut définir l'implémentation.
4. Lors de l'héritage d'une classe abstraite, toutes les méthodes marquées abstraites dans la déclaration de classe du parent doivent être définies par l'enfant : Si vous héritez d'une classe abstraite, vous devez fournir des implémentations à toutes les méthodes abstraites qu'elle contient.
5. Visibilité identique (ou moins restreinte) : lors de l'héritage d'une classe abstraite, toutes les méthodes marquées abstraites dans la déclaration de classe du parent doivent être définies par l'enfant; en outre, ces méthodes doivent être définies avec la même visibilité (ou une visibilité moins restreinte). Par exemple, si la méthode abstraite est définie comme protégée, l'implémentation de la fonction doit être définie comme protégée ou publique, mais pas privée.
6. Les signatures des méthodes abstraites doivent correspondre : lors de l'héritage d'une classe abstraite, toutes les méthodes marquées abstract dans la déclaration de classe du parent doivent être définies par l'enfant; les signatures des méthodes doivent correspondre, c'est-à-dire les indices de type et le nombre de les arguments doivent être les mêmes. Par exemple, si la classe enfant définit un argument facultatif, alors que la signature de la méthode abstraite ne le fait pas, il n'y a pas de conflit dans la signature.
7. La classe abstraite ne prend pas en charge l'héritage multiple : la classe abstraite peut étendre une autre classe abstraite, la classe abstraite peut fournir l'implémentation de l'interface. Mais elle ne prend pas en charge l'héritage multiple.
L'exemple ci-dessous provoquera une erreur fatale: la classe 'cheval' n'a pas été trouvée
la source
Il y a une bonne explication à cela ici .
la source
Classe abstraite
1. Contient une méthode abstraite
2. Ne peut pas être directement initialisé
3. Impossible de créer un objet de classe abstraite
4. Utilisé uniquement à des fins d'héritage
Méthode abstraite
1. Ne peut pas contenir de corps
2. Ne peut pas être définie comme privée
3. Les classes enfants doivent définir les méthodes déclarées dans la classe abstraite
Exemple de code:
Production:
la source
la source
Les classes abstraites sont les classes qui ne peuvent pas être initialisées directement. Ou en d'autres termes, nous pouvons dire que les classes abstraites sont ces classes dont l'objet ne peut pas être créé directement. En PHP, les classes abstraites sont défiées par le mot-clé abstract .
Aussi pour devenir une classe abstraite au moins une méthode de la classe doit être abstraite.
Pour le détail de la classe abstraite, vous pouvez vous référer à mon blog sur la classe abstraite en PHP .
la source
Une classe abstraite est comme la classe normale elle contient des variables elle contient des variables protégées fonctions qu'elle contient constructeur une seule chose est différente elle contient une méthode abstraite.
La méthode abstraite signifie une méthode vide sans définition donc une seule différence dans la classe abstraite nous ne pouvons pas créer un objet de classe abstraite
Abstract doit contenir la méthode abstraite et ces méthodes doivent être définies dans sa classe héritière.
la source