Heim  >  Artikel  >  Backend-Entwicklung  >  Lassen Sie uns über private Methoden der übergeordneten PHP-Klasse sprechen

Lassen Sie uns über private Methoden der übergeordneten PHP-Klasse sprechen

PHPz
PHPzOriginal
2023-04-03 16:14:13650Durchsuche

PHP ist eine sehr beliebte serverseitige Skriptsprache, die häufig zur Entwicklung von Webanwendungen verwendet wird. In PHP können wir eine Klasse definieren, die Eigenschaften und Methoden haben kann. Zu den Zugriffsmodifikatoren von Klassenmethoden gehören public, private und protected. Unter diesen bedeutet öffentlich, dass auf diese Methode außerhalb der Klasse zugegriffen werden kann, geschützt und privat jedoch nicht.

In einer Vererbungsbeziehung kann eine Unterklasse die öffentlichen Methoden und Eigenschaften der übergeordneten Klasse erben, die Unterklasse jedoch nicht die privaten Methoden der übergeordneten Klasse. In diesem Artikel werden verwandte Probleme zu privaten Methoden von übergeordneten PHP-Klassen erörtert.

Zuerst müssen wir private Methoden verstehen.

Private Methoden beziehen sich auf Methoden, auf die nur innerhalb der Klasse und nicht außerhalb der Klasse oder Unterklassen zugegriffen werden kann. In PHP können wir private Methoden definieren, indem wir private vor der Methode hinzufügen. Zum Beispiel:

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

In diesem Beispiel ist privateMethod() eine private Methode und kann nur in der ParentClass-Klasse aufgerufen werden. Wenn wir versuchen, außerhalb der Klasse oder in einer Unterklasse auf diese Methode zuzugreifen, wird ein Fehler gemeldet.

Wenn wir eine Unterklasse definieren, erbt die Unterklasse die öffentlichen und geschützten Methoden und Eigenschaften der übergeordneten Klasse. Private Methoden in der übergeordneten Klasse können jedoch nicht von Unterklassen geerbt werden. Dies liegt daran, dass es sich bei der Vererbung um eine Ist-Beziehung handelt, während private Methoden zu einer Ist-Beziehung gehören.

Hier ist ein Beispiel:

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

In diesem Beispiel definieren wir eine ParentClass-Klasse, die eine private Methode privateMethod() und eine geschützte Methode protectedMethod() enthält. Wir definieren auch eine ChildClass-Klasse, die die ParentClass-Klasse erbt.

Wenn wir die geschützte Methode protectedMethod() in der untergeordneten Klasse aufrufen, funktioniert es einwandfrei, aber wenn wir versuchen, die private Methode privateMethod() der übergeordneten Klasse aufzurufen, tritt ein schwerwiegender Fehler auf.

Wie greife ich also auf die privaten Methoden der übergeordneten Klasse in der Unterklasse zu? Eine Möglichkeit besteht darin, die öffentliche oder geschützte Methode der übergeordneten Klasse zum Aufrufen der privaten Methode zu verwenden.

Zum Beispiel:

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.

In diesem Beispiel rufen wir die private Methode in der geschützten Methode der übergeordneten Klasse auf und definieren eine öffentliche Methode publicMethod() in der untergeordneten Klasse, die die geschützte Methode protectedMethod() aufruft. Wenn wir die publicMethod()-Methode der Unterklasse aufrufen, wird „Dies ist eine geschützte Methode. Dies ist eine private Methode“ ausgegeben.

Zusammenfassung

In PHP ist der Zugriff auf private Methoden nur innerhalb der Klassenmethode möglich. Eine untergeordnete Klasse kann die privaten Methoden der übergeordneten Klasse nicht erben, kann jedoch auf diese zugreifen, indem sie eine öffentliche oder geschützte Methode in die übergeordnete Klasse einfügt. Dies bedeutet, dass Sie beim Erben auf den Zugriff auf die privaten Methoden der übergeordneten Klasse achten müssen, um unerwartete Fehler zu vermeiden.

Das obige ist der detaillierte Inhalt vonLassen Sie uns über private Methoden der übergeordneten PHP-Klasse sprechen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn