Maison  >  Article  >  développement back-end  >  Explication détaillée du mot-clé Final en PHP orienté objet (exemple de code)

Explication détaillée du mot-clé Final en PHP orienté objet (exemple de code)

易达
易达original
2020-05-25 16:31:322114parcourir

Objectifs de cet article :

1. Comprendre la définition du mot-clé Final en PHP

2 Comprendre le rôle du mot-clé Final en PHP

3. Mot-clé Final en PHP Scénarios d'utilisation des mots-clés

4. Maîtrisez l'implémentation spécifique du mot-clé Final en PHP

Toujours en suivant la réflexion cohérente précédente, nous apprendrons à travers la méthode 3W1H, alors commençons par comprenez-le

(1) Comprendre la définition du mot-clé Final en PHP (What)

Si vous ajoutez final avant une classe, alors la classe ne peut pas être héritée. Si vous ajoutez final avant a. méthode, Alors cette méthode ne peut pas être remplacée

(2) Comprendre le rôle du mot-clé Final en PHP (Pourquoi)

Il y a deux fonctions principales :

1. Les classes sont héritées

2. Empêcher la substitution des méthodes de classe

(3) Comprendre les scénarios d'utilisation du mot-clé Final en PHP (Où)

Si vous voulez une classe S'il n'y a pas de sous-classe ou qu'une méthode de classe ne peut pas être surchargée, alors vous pouvez envisager d'utiliser l'implémentation finale

(4) Maîtriser l'implémentation spécifique du mot-clé Final en PHP (Comment)

Résumé :

1. Le format de définition de la classe finale est : final class nom de la classe {}

2. Portez une attention particulière au fait que seul PHP5 a le concept de mot-clé final. n'existait pas avant PHP5

3. Le format de définition de la méthode finale est : nom de la méthode de fonction publique (ou protégée) finale (paramètres...){}

4. définie comme classe finale, elle ne peut pas être héritée, c'est-à-dire qu'elle ne peut pas avoir de sous-classes

5 Une fois qu'une méthode est définie comme méthode finale, elle ne peut pas être remplacée par des sous-classes

Toutes les conclusions. sont basés sur la pratique. Alors ensuite, il nous reste à le prouver un par un, afin de pouvoir l'utiliser en toute confiance

(5), code spécifique

1. 1 :

Objectifs pratiques :

1. Le format de définition de la classe finale est : classe finale nom de la classe {}

<?php
//定义“人”类
final class Human{
    public function eat(){
        echo "Human 中的eat方法被执行了<br/>";
    }
}

$human = new Human();
$human->eat();
?>

Le résultat de l'opération est :

La méthode eat dans Human est exécutée

2. Cas 2 :

Objectif pratique :

1. la méthode finale est : fonction publique finale (ou protégée) Nom de la méthode (paramètres...){}

<?php
class Human{
    final public function eat(){
        echo "Human 中的 类型为final的eat方法被执行了<br/>";
    }
}
$human = new Human();
$human->eat();
?>

Le résultat de l'opération est :

La méthode eat finale dans Human est exécutée

3. Cas 3 :

Objectifs pratiques :

1 Une fois qu'une classe est définie comme classe finale, elle ne peut pas être héritée, c'est-à-dire. il ne peut pas avoir de sous-classes

<?php
//定义“人”类
final class Human{
    public function eat(){
        echo "Human 中的 类型为final的eat方法被执行了<br/>";
    }
}

//定义Nba球员类
class NbaPlayer extends Human{
    public function eat(){
        
    }
}
?>

Le résultat en cours d'exécution est :

Erreur fatale : la classe NbaPlayer ne peut pas hériter de la classe finale (Human) dans D:E-classclass-codeclassingindex.php à la ligne 14

4. Cas 4 :

Objectifs pratiques :

1 Une fois qu'une méthode est définie comme méthode finale, elle ne peut pas être remplacée. par une sous-classe

<?php
//定义“人”类
class Human{
    final public function eat(){
        echo "Human 中的 类型为final的eat方法被执行了<br/>";
    }
}

//定义Nba球员类
class NbaPlayer extends Human{
    public function eat(){
        echo "NbaPlayer中的eat方法,重写了父类的eat方法<br/>";
    }
}
?>

et exécutez Le résultat est :

Erreur fatale : impossible de remplacer la méthode finale Human::eat() dans D:E-classclass-codeclassingindex.php à la ligne 14

(6) Appliquez ce que vous avez appris

Jusqu'à présent, nous devrions avoir une compréhension claire de la finale. Ensuite, nous pouvons appliquer ce que nous avons appris et utiliser les connaissances que nous avons acquises pour résoudre les problèmes suivants.

Problème : sur la base d'années d'expérience, de nombreuses méthodes d'exploitation des données peuvent en fait être réutilisées. En plus d'être utilisées dans un projet, elles peuvent être utilisées dans de nombreux projets, et de nombreux endroits d'un projet peuvent être réutilisés. nous prévoyons donc d'encapsuler ces méthodes communes dans une seule classe, mais cette classe n'a pas besoin d'avoir de sous-classes et je ne veux pas que les méthodes qu'elle contient soient remplacées. Que dois-je faire ?

Analyse d'idées :

1. Créez une classe qui contient des méthodes courantes de manipulation de données

2. Parce que vous ne voulez pas que la classe est un héritage, donc combinée avec le rôle de final, nous pouvons définir la classe comme une classe finale

3. Une fois qu'une classe est définie comme classe finale, les méthodes qu'elle contient ne seront naturellement pas remplacées, car il n'y a pas de sous-classes. Comment pouvons-nous le réécrire dans une sous-classe ?

Le code spécifique est le suivant :

<?php
final class MyDataOpClass{
    public function abs(){
        //求绝对值
    }
    //产生随机数
    public function rand(){
        echo "产生随机数方法";
    }
    //获取数组中的最大值
    public function getMax($numArr){
        
    }
    //获取数组中的最小值
    public function getMin($numArr){

    }
    //其他方法就此省略
}
$mymath = new MyDataOpClass();
$mymath->rand();
?>

Les résultats d'exécution sont les suivants :

Méthode pour générer des nombres aléatoires

Explication : Cet exemple est un peu simple, mais j'espère que chacun fera attention à son analyse des idées et sera aussi précis et clair que possible

Résumé :

1. Le contenu principal de cet article a expliqué la définition et la fonction de final ainsi que la mise en œuvre spécifique

J'espère que cet article pourra vous apporter de l'aide, merci à tous ! ! !

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