Maison  >  Article  >  développement back-end  >  Parlons des méthodes privées de la classe parent PHP

Parlons des méthodes privées de la classe parent PHP

PHPz
PHPzoriginal
2023-04-03 16:14:13650parcourir

PHP est un langage de script côté serveur très populaire qui est souvent utilisé pour développer des applications Web. En PHP, nous pouvons définir une classe qui peut avoir des propriétés et des méthodes. Les modificateurs d'accès des méthodes de classe incluent public, privé et protégé. Parmi eux, public signifie que cette méthode est accessible en dehors de la classe, alors que protected et private ne le peuvent pas.

Dans une relation d'héritage, une sous-classe peut hériter des méthodes et propriétés publiques de la classe parent, mais la sous-classe ne peut pas hériter des méthodes privées de la classe parent. Cet article abordera les problèmes liés aux méthodes privées des classes parents PHP.

Tout d’abord, nous devons comprendre les méthodes privées.

Les méthodes privées font référence à des méthodes accessibles uniquement au sein de la classe et non accessibles en dehors de la classe ou des sous-classes. En PHP, on peut définir des méthodes privées en ajoutant private devant la méthode. Par exemple :

class ParentClass {
    private function privateMethod() {
        // some code here
    }
}

Dans cet exemple, privateMethod() est une méthode privée et n'est accessible que dans la classe ParentClass. Si nous essayons d'accéder à cette méthode en dehors de la classe ou dans une sous-classe, une erreur sera signalée.

Lorsque nous définissons une sous-classe, la sous-classe héritera des méthodes et propriétés publiques et protégées de la classe parent. Mais pour les méthodes privées de la classe parent, les sous-classes ne peuvent pas en hériter. En effet, l'héritage est une relation est-une, tandis que les méthodes privées appartiennent à une relation a-a.

Voici un exemple :

class ParentClass {
    private function privateMethod() {
        echo "This is a private method.";
    }
    
    protected function protectedMethod() {
        echo "This is a protected method.";
    }
}

class ChildClass extends ParentClass {
    // some code here
}

$childObj = new ChildClass();
$childObj->protectedMethod(); // This is a protected method.
$childObj->privateMethod(); // Fatal error: Call to private method ParentClass::privateMethod() from context...

Dans cet exemple, nous définissons une classe ParentClass qui contient une méthode privée privateMethod() et une méthode protégée protectedMethod(). Nous définissons également une classe ChildClass, qui hérite de la classe ParentClass.

Lorsque nous appelons la méthode protégée protectedMethod() dans la classe enfant, cela fonctionne bien, mais lorsque nous essayons d'appeler la méthode privée privateMethod() de la classe parent, une erreur fatale se produit.

Alors, comment accéder aux méthodes privées de la classe parent dans la sous-classe ? Une solution consiste à utiliser la méthode publique ou protégée de la classe parent pour appeler la méthode privée.

Par exemple :

class ParentClass {
    private function privateMethod() {
        echo "This is a private method.";
    }
    
    protected function protectedMethod() {
        echo "This is a protected method.";
        $this->privateMethod(); // call private method
    }
}

class ChildClass extends ParentClass {
    public function publicMethod() {
        $this->protectedMethod(); // call protected method
    }
}

$childObj = new ChildClass();
$childObj->publicMethod(); // This is a protected method. This is a private method.

Dans cet exemple, nous appelons la méthode privée dans la méthode protégée de la classe parent et définissons une méthode publique publicMethod() dans la classe enfant, qui appelle la méthode protégée protectedMethod(). Lorsque nous appelons la méthode publicMethod() de la sous-classe, elle affichera "Ceci est une méthode protégée. Ceci est une méthode privée."

Résumé

En PHP, les méthodes privées ne sont accessibles qu'à l'intérieur de la méthode de classe. Une classe enfant ne peut pas hériter des méthodes privées de la classe parent, mais elle peut y accéder en incluant une méthode publique ou protégée dans la classe parent. Cela signifie que vous devez faire attention à l'accès aux méthodes privées de la classe parent lors de l'héritage pour éviter des erreurs inattendues.

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