Maison >développement back-end >Problème PHP >Comment comprendre les méthodes abstraites de PHP

Comment comprendre les méthodes abstraites de PHP

coldplay.xixi
coldplay.xixioriginal
2020-11-04 14:00:172532parcourir

Comprendre les méthodes abstraites PHP : 1. Dans le langage POO, chaque classe possède au moins une méthode publique comme interface permettant au code externe d'y accéder. Des méthodes abstraites sont introduites pour faciliter l'héritage. 2. Dans Une méthode définie dans. une classe sans corps de méthode est une méthode abstraite.

Comment comprendre les méthodes abstraites de PHP

La méthode abstraite de PHP est :

En langage POO, une classe peut avoir une ou plusieurs sous-classes, et chaque classe possède au moins une méthode publique comme interface permettant au code externe d'y accéder. La méthode abstraite est introduite pour faciliter l'héritage Examinons d'abord les définitions des classes abstraites et des méthodes abstraites avant d'expliquer leurs utilisations.

Qu'est-ce qu'une méthode abstraite ? La méthode que nous définissons dans la classe sans corps de méthode est une méthode abstraite Ce que l'on appelle sans corps de méthode signifie que lorsque la méthode est déclarée, il n'y a pas d'accolades et son contenu, mais directement dans le. déclaration. Ajoutez un point-virgule après le nom de la méthode. De plus, lors de la déclaration d'une méthode abstraite, ajoutez le mot-clé "abstract" pour la modifier

abstract function fun1();
abstract function fun2();

L'exemple ci-dessus est une méthode abstraite sans corps de méthode modifié par " ; abstract"" fun1()" et "fun2()", n'oubliez pas qu'il y a un point-virgule après la méthode abstraite ; alors qu'est-ce qu'une classe abstraite ? Tant qu'une méthode dans une classe est une méthode abstraite, alors la classe doit être définie comme une classe abstraite, et la classe abstraite doit également être modifiée avec le mot-clé « abstract » dans une classe abstraite, il peut y avoir des méthodes et des membres ; des attributs qui ne sont pas abstraits, mais tant que Si une méthode est une méthode abstraite, la classe doit être déclarée comme classe abstraite et décorée de "abstract".

abstract class Demo
{
    var $test;
    abstract function fun1();
    abstract function fun2();
    function fun3(){
        ...
    }
}

Dans l'exemple ci-dessus, une classe abstraite "Demo" est définie et modifiée avec "abstract". Dans cette classe, un attribut membre "$test" et deux méthodes abstraites "fun1" et " fun2", il existe également une méthode non abstraite fun3(); alors comment utiliser les classes abstraites ? Le point le plus important est que les classes abstraites ne peuvent pas produire d'objets d'instance, elles ne peuvent donc pas être utilisées directement.Nous avons mentionné à plusieurs reprises que les classes ne peuvent pas être utilisées directement.Nous utilisons des objets instanciés via des classes, donc les classes abstraites ne peuvent pas produire d'objets d'instance. l'utilité de déclarer une classe abstraite ? Nous utilisons des méthodes abstraites comme modèles pour la surcharge des sous-classes. Définir une classe abstraite équivaut à définir une spécification, qui nécessite que les sous-classes se conforment. Une fois que la sous-classe a hérité de la classe abstraite, les méthodes abstraites sont implémentées selon les besoins des sous-classes. La sous-classe doit implémenter toutes les méthodes abstraites de la classe parent, sinon il y a encore des méthodes abstraites dans la sous-classe, Alors la sous-classe est toujours une classe abstraite, et la classe ne peut toujours pas être instanciée Pourquoi devons-nous hériter d'une classe abstraite ? Parce que parfois si on veut implémenter certaines fonctions, il faut hériter d'une classe abstraite, sinon vous ne pourrez pas implémenter ces fonctions. Si vous héritez d'une classe abstraite, vous devez implémenter les méthodes abstraites dans la classe

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

Recommandations d'apprentissage gratuites associées :

programmation php (vidéo)

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:
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