Maison  >  Article  >  développement back-end  >  PHP peut-il définir des méthodes abstraites ?

PHP peut-il définir des méthodes abstraites ?

青灯夜游
青灯夜游original
2022-03-15 12:07:331781parcourir

php peut définir des méthodes abstraites. Afin de faciliter l'héritage de classe, le concept de méthodes abstraites est introduit dans PHP5 ; les méthodes abstraites sont des méthodes sans corps de méthode. Lors de la déclaration de méthodes abstraites en PHP, utilisez la modification du mot clé "abstract", et la syntaxe est "fonction de modification d'autorisation d'accès abstraite". nom de la méthode (liste de paramètres) );".

PHP peut-il définir des méthodes abstraites ?

L'environnement d'exploitation de ce tutoriel : système Windows 7, PHP version 7.1, ordinateur DELL G3

php peut définir des méthodes abstraites.

Dans les langages orientés objet, une classe peut avoir une ou plusieurs sous-classes, et chaque classe doit avoir au moins une méthode publique comme point d'entrée pour que le code externe puisse y accéder.

Les classes abstraites et les méthodes abstraites sont un concept introduit dans PHP5, principalement pour faciliter l'héritage de classe.

Méthode abstraite et méthode abstraite

La méthode abstraite est une méthode sans corps de méthode. Le soi-disant corps sans méthode signifie que lors de la déclaration d'une méthode, il n'y a pas d'accolades { } et son contenu. , mais directement dans Terminez le nom de la méthode par un point-virgule. De plus, utilisez le mot-clé "abstract" lors de la déclaration d'une méthode abstraite. Le format est le suivant :

abstract 访问权限修饰符 function 方法名1(参数列表);
abstract 访问权限修饰符 function 方法名2(参数列表);

Exemple :

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

L'exemple ci-dessus est la méthode abstraite "fun1()" et "fun2()" sans corps de méthode modifié par "abstract". La méthode abstraite doit être suivie d'un point-virgule ;

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 attributs de membre qui ne sont pas abstraits. Mais tant qu'il existe une méthode abstraite, la classe doit être déclarée comme classe abstraite et décorée avec "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" sont définies. 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, s'il y a encore des méthodes abstraites dans la sous-classe, la sous-classe sera toujours une classe abstraite et ne pourra pas instancier la classe ; Parce que parfois nous devons hériter de classes abstraites pour implémenter certaines fonctions, 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(); //子类可以实例化对象,因为实现了父类中所有抽象方法
?>

Apprentissage recommandé : "PHP ; Tutoriel 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