Maison  >  Article  >  développement back-end  >  Vous devez comprendre ce que sont les classes abstraites et les méthodes abstraites en PHP

Vous devez comprendre ce que sont les classes abstraites et les méthodes abstraites en PHP

WBOY
WBOYoriginal
2021-10-26 15:52:063509parcourir

Dans l'article précédent, je vous ai présenté "Vous emmène voir la déclaration et l'application de l'interface en PHP en cinq minutes (exemples détaillés)", qui présentait en détail les problèmes de déclaration et d'application de l'interface PHP. dans cet article, jetons un coup d'œil aux classes abstraites et aux méthodes abstraites en PHP. J'espère que cela sera utile à tout le monde !

Vous devez comprendre ce que sont les classes abstraites et les méthodes abstraites en PHP

Dans l'article précédent, j'ai présenté l'interface, qui mentionnait que l'interface peut être comprise comme une classe abstraite spéciale. Alors, qu'est-ce qu'une classe abstraite ? Pour comprendre ce qu'est une classe abstraite, il faut d'abord parler de ce qu'est une classe abstraite. une méthode abstraite est , l'émergence de classes abstraites et de méthodes abstraites vise principalement à faciliter l'héritage des classes, jetons ensuite un coup d'œil à ce que sont les méthodes abstraites et ce que sont les classes abstraites.

Qu'est-ce qu'une méthode abstraite

Dans notre étude précédente, une classe peut avoir plusieurs sous-classes. Nous définissons des méthodes abstraites pour faciliter l'héritage de classe. Les méthodes définies dans notre classe sans corps de méthode sont des méthodes abstraites. Alors, qu’est-ce qu’un corps de méthode ? Le corps de la méthode fait référence aux accolades et au contenu entre les accolades lorsque la classe est déclarée. L'absence de corps de méthode signifie qu'il n'existe pas de tel contenu. Au lieu de cela, il est directement placé après l'instruction de méthode et se termine par un point-virgule. lors de la déclaration. C'est ce qu'on appelle une méthode abstraite.

Il est à noter que les méthodes abstraites doivent être modifiées avec le mot-clé "abstract" lors de leur déclaration. Son format de syntaxe est le suivant : abstract”来进行修饰。它的语法格式如下:

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

抽象方法的理解还是比较简单的,接下来我们看一下什么是抽象类。

什么是抽象类

通过上文已经知道了什么是抽象方法,那么抽象类的定义其实也很好理解,当一个类的里面有一个方法是抽象方法的时候,我们定义这个类就是抽象类。同时抽象类也是需要使用“abstract”关键字来修饰的,在抽象类里面可以有不是抽象方法的成员属性,但是一旦有一个方法是抽象方法,那这个类就是抽象类。

其中需要注意的是,抽象类的成员方法并不全是抽象方法,哪些不是抽象方法的成员方法和属性访问权限不能是private

abstract class demo{
var $test;
abstract function fun1();
abstract function fun2();
}

La compréhension des méthodes abstraites est relativement simple. Voyons ensuite ce qu'est une classe abstraite.


Qu'est-ce qu'une classe abstraite

  • Grâce à ce qui précède, nous savons déjà ce qu'est une méthode abstraite, donc la définition d'une classe abstraite est en fait facile à comprendre lorsqu'une méthode dans une classe est une méthode abstraite. , nous définissons cette classe comme une classe abstraite. Dans le même temps, les classes abstraites doivent également être modifiées à l'aide du mot-clé "abstract". Dans les classes abstraites, il peut y avoir des attributs membres qui ne sont pas des méthodes abstraites, mais une fois qu'une méthode est une méthode abstraite, alors cette classe est une classe abstraite.

    Il convient de noter que toutes les méthodes membres des classes abstraites ne sont pas des méthodes abstraites. Les méthodes membres et les autorisations d'accès aux attributs qui ne sont pas des méthodes abstraites ne peuvent pas être privées. hérité.
  • Laissez-moi vous montrer un exemple ci-dessous :

  • <?php
        abstract class father{
            public $study = &#39;好好学习<br>&#39;;
            public $study1 = &#39;天天向上<br>&#39;;
            abstract function title();
            abstract function output();
        }
        class Demo extends father{
            public function title(){
                echo &#39;福如东海,寿比南山。&#39;;
            }
            public function output(){
                echo $this -> study.$this -> study1;
            }
        }
        $obj = new Demo();
        $obj -> output();
        $obj -> title();
    ?>
  • Caractéristiques des classes abstraites

  • Les classes abstraites et les méthodes abstraites doivent être modifiées avec abstract ;


Les méthodes abstraites doivent être dans des classes abstraites, dans les classes abstraites Il ne peut y avoir de méthodes abstraites ;

Les classes abstraites ne peuvent pas créer directement des objets (instanciés) ;


Si une sous-classe d'une classe abstraite remplace toutes les méthodes abstraites, c'est une classe concrète ; la classe abstraite n'est pas remplacée Écrivez toutes les méthodes abstraites, alors la sous-classe est toujours une classe abstraite

Vous devez comprendre ce que sont les classes abstraites et les méthodes abstraites en PHP

La classe abstraite contient des méthodes abstraites qui ne peuvent pas être implémentées, ce qui signifie que la classe abstraite ne peut pas être instanciée, alors l'objet ne peut pas être créé ; , nous ne pouvons donc pas l'utiliser directement. Alors, puisque nous ne pouvons pas l'utiliser directement, quels problèmes pouvons-nous résoudre en utilisant des classes abstraites ?

Ensuite, examinons un exemple, définissons une classe abstraite, puis utilisons une autre classe pour hériter de cette classe abstraite et implémenter les méthodes abstraites dans la classe abstraite.

L'exemple est le suivant :

rrreeeRésultat de sortie :

  • À partir de l'exemple ci-dessus, nous définissons une classe abstraite, puis utilisons une autre classe pour hériter de cette classe abstraite et implémenter la méthode abstraite dans la classe abstraite .
  • Comme mentionné ci-dessus, l'article précédent parlait des connaissances pertinentes de l'interface PHP. Il disait que l'interface peut être comprise comme une classe abstraite spéciale. Alors, puisqu'elle est spéciale, quelles sont les différences et les similitudes entre l'interface PHP et la classe abstraite. ? Jetons un coup d'œil ci-dessous. Il est recommandé de lire d'abord "

    Cinq minutes pour vous montrer la déclaration et l'application de l'interface en PHP (exemples détaillés)

    " qui présente l'interface PHP.
  • La différence entre les interfaces PHP et les classes abstraites

  • Les classes abstraites peuvent avoir des attributs, des méthodes ordinaires et des méthodes abstraites, mais les interfaces ne peuvent pas avoir d'attributs, de méthodes ordinaires et peuvent avoir des constantes.

Il ne peut pas y avoir de méthodes abstraites dans les classes abstraites, mais il doit y avoir des méthodes "abstraites" dans les interfaces.

🎜🎜Les classes abstraites sont déclarées avant la classe avec le mot-clé abstract, et la classe est déclarée comme une classe. L'interface est déclarée avec interface, mais ne peut pas être déclarée avec class, car l'interface n'est pas une classe. 🎜🎜🎜🎜Les classes abstraites utilisent le mot-clé extends pour permettre à la sous-classe d'hériter de la classe parent, puis d'implémenter des méthodes abstraites détaillées dans la sous-classe. L'interface utilise des implémentations pour permettre aux classes ordinaires d'implémenter des méthodes détaillées de l'interface dans la classe, et l'interface peut implémenter plusieurs méthodes à la fois, utilisez simplement des virgules pour séparer chaque interface. 🎜🎜🎜🎜🎜Les similitudes entre l'interface PHP et la classe abstraite🎜🎜
  • sont tous utilisés pour déclarer une certaine chose, normaliser les noms et les paramètres et former des modules, sans détails d'implémentation détaillés.

  • Tous les détails associés sont mis en œuvre à travers les cours.

  • Syntaxiquement, la méthode abstraite d'une classe abstraite est la même qu'une interface et ne peut pas avoir de corps de méthode, c'est-à-dire le symbole {}.

  • peuvent tous utiliser l'héritage. Les interfaces peuvent hériter d'interfaces pour former de nouvelles interfaces, et les classes abstraites peuvent hériter de classes abstraites pour former de nouvelles classes abstraites.

Si vous êtes intéressé, vous pouvez cliquer sur "Tutoriel vidéo PHP" pour en savoir plus sur les connaissances 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:
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