Heim  >  Artikel  >  Backend-Entwicklung  >  Was sind die Prinzipien zum Umschreiben von PHP-Klassenmethoden?

Was sind die Prinzipien zum Umschreiben von PHP-Klassenmethoden?

coldplay.xixi
coldplay.xixiOriginal
2020-10-30 15:30:432117Durchsuche

Grundsätze zum Umschreiben von PHP-Klassenmethoden: 1. Endgültig geänderte Klassenmethoden können nicht von Unterklassen überschrieben werden. 2. Ob PHP übergeordnete Klassenmethoden überschreibt, wird nur anhand der Konsistenz der Methodennamen beurteilt nur gleich sein Oder es ist lockerer als die übergeordnete Klasse und die Zugriffsebene kann nicht aktualisiert werden.

Was sind die Prinzipien zum Umschreiben von PHP-Klassenmethoden?

Prinzipien zum Umschreiben von PHP-Klassenmethoden:

1. Durch final geänderte Klassenmethoden können nicht durch Unterklassen überschrieben werden.

Durch final geänderte Klassenmethoden können nicht durch Unterklassen überschrieben werden, auch wenn die finale private Methode ist kann nicht vererbt werden. Unterklassen können immer noch nicht zum Umschreiben ausgerichtet werden beim Umschreiben gleich sein)

Das heißt nicht, dass Methodenparameter keine Auswirkung haben, daher wird es nur anhand des Methodennamens beurteilt (C/C++ muss nicht nur denselben Methodennamen haben, sondern auch die gleichen Parameter), wird es als Überschreibung betrachtet, andernfalls wird es überladen, d. 5.2 kann unterschiedliche Parameter haben. Nach 5.3 müssen die Parameter mit der Methode der übergeordneten Klasse übereinstimmen und alle den Regeln der geerbten Zugriffsebene folgen.

class FinalMethod
{
    //可继承不可重写
    final public function finalPublic()
    {
        echo "can be inherited, but be overrided";
    }
    //可继承不可重写
    final protected function finalProtected()
    {
        echo "can be inherited, but be overrided";
    }
    //不可继承不可重写 虽然子类继承不到父类的private方法 但同时也会被final限制无法重写
    final private function finalPrivate()
    {
        echo "can not be inherited or be overrided";
    }
    //虽然不可继承 但子类里可重写此方法
    private function private()
    {
        echo "can not be inherited ,but be overrided";
    }
}
class Override extends FinalMethod
{
    //error
    public function finalPublic()
    {
    }
    //error
    protected function finalProtected()
    {
    }
    //error
    private function finalPrivate()
    {
    }
    //correct
    public/protected/private function private()
    {
        //子类继承父类重写父类方法时访问级别只能更加宽松 不可更为严格
    }
}

3. Beim Überschreiben kann die Zugriffsebene nur gleich oder niedriger sein als die der übergeordneten Klasse.

Die öffentliche Methode der übergeordneten Klasse kann nicht als geschützt oder privat umgeschrieben werden durch die Unterklasse, und die geschützte Methode kann nicht als privat umgeschrieben werden. Sie kann lockerer und nicht strenger sein. Tatsächlich gibt es viele interessante Dinge an den Vererbungsregeln für Zugriffsebenen. Privat kann nach unserem gesunden Menschenverstand nicht vererbt werden Unterklassen können es nicht erhalten, aber seine Zugriffsebene ist bereits die höchste, sodass Sie in der Unterklasse private, geschützte öffentliche Elemente schreiben können, als ob wir eine Funktion selbst neu definiert hätten. Dies ist vor Version 5.2 besonders wichtig, da dies bei Versionen vor 5.2 nicht erforderlich ist Behalten Sie die gleiche Anzahl von Parametern beim Erben und Überschreiben von Methoden der übergeordneten Klasse bei, aber nach 5.3 wurden die Einschränkungen in diesem Bereich verschärft. Die Anzahl der Parameter muss mit der der übergeordneten Klasse übereinstimmen Die abstrakte Methode der übergeordneten Klasse oder eine Methode, die eine Schnittstelle implementiert, ist immer noch eine Vererbungsbeziehung und der Zugriff wird weiterhin verfolgt. Die Ebene kann nur die Regeln senken, die nicht aktualisiert werden können. Und abstrakte Methoden können nicht als deklariert werden Für die Vererbung müssen private Methoden verwendet werden, sodass sie nur öffentlich oder geschützt sein können. Die Methodendeklaration der Schnittstelle muss öffentlich sein. Die deklarierte Methode muss ebenfalls vererbt und implementiert werden und kann nur öffentlich sein . Die Implements-Klasse dieser Schnittstelle gibt auch Methoden an, die als öffentliche Typen umgeschrieben werden sollen

Das obige ist der detaillierte Inhalt vonWas sind die Prinzipien zum Umschreiben von PHP-Klassenmethoden?. 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