Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist der Unterschied zwischen PHP-Neuladen und Umschreiben?

Was ist der Unterschied zwischen PHP-Neuladen und Umschreiben?

王林
王林nach vorne
2019-09-05 18:04:094717Durchsuche

Was ist der Unterschied zwischen PHP-Neuladen und Umschreiben?

Umschreiben:

bedeutet, dass, wenn eine Unterklasse einige Methoden der übergeordneten Klasse erbt und die Unterklasse intern dieselbe Methode definiert, diese neu definierte Methode überschrieben wird Die geerbte Methode der übergeordneten Klasse, und die Unterklasse kann nur ihre intern definierten Methoden aufrufen.

hat die folgenden Anforderungen:

1 Wenn eine übergeordnete Klasse und eine Unterklasse eine Methode mit genau denselben Parametern und Namen haben, überschreibt die Unterklassenmethode diese Methode der übergeordneten Klasse.

Die Parameter müssen konsistent sein, um eine Methodenabdeckung zu erreichen. Wenn die Anzahl der Parameter inkonsistent ist, wird ein Fehler gemeldet (dies führt zu einer Überlastung der oben genannten Methoden). Wenn die Methodennamen inkonsistent sind, werden sie nicht überschrieben, sondern nur die neu definierten Methoden der Unterklasse.

2. Bei der Implementierung der Methodenabdeckung können die Zugriffsmodifikatoren unterschiedlich sein, aber der Zugriffsbereich der Unterklasse muss größer oder gleich dem Zugriffsbereich der übergeordneten Klasse sein .

Dies ist wahrscheinlich die Designregel von Sprachen wie PHP. Ich verstehe, dass es einfacher ist, auf Dinge auf einer höheren Ebene zuzugreifen. Wenn Sie auf Dinge auf einer niedrigeren Ebene zugreifen möchten, müssen Sie über höhere Berechtigungen verfügen.

erfordert, dass die Parameter mit dem Namen übereinstimmen. Es ist nicht erforderlich, dass die Unterklasse denselben Namen wie die übergeordnete Klasse hat.

erfordert, dass die Parameter und Namen identisch sind. Insbesondere muss die Anzahl der Parameter mit der der übergeordneten Klasse übereinstimmen, nicht jedoch die Parameternamen. Das heißt, der Name der übergebenen Parameter kann beliebig sein, solange die übergebene Nummer dieselbe ist.

Sehen Sie sich den Code an:

<?php
class  shao
{
    public function sasa($name){
        echo $name,&#39;狗!<br/>&#39;;
    }
}
class zhen extends shao{
    public function aaa()
    {
        echo &#39;猫<br/>&#39;;
    }
}
$lli = new zhen();
$lli->aaa();
$lli->aaa(&#39;binghh&#39;);
?>
<?php
class fu
{
    public function text(){
        echo &#39;父类&#39;;
    }
    public  function  textt(){
        echo &#39;父亲&#39;;
}
}
class erzi extends fu{
    public function text()
    {
        parent::text();//我要父类的东西
        echo &#39;儿子&#39;;//重写

    }
}
$shili = new fu();
$erzi = new erzi();
$erzi->text();
?>

Überladung:

Überladung ist eine Implementierung des Klassenpolymorphismus. Funktionsüberladung bedeutet, dass ein Bezeichner als mehrfacher Funktionsname verwendet wird und diese Funktionen mit demselben Namen anhand der Nummer oder des Parametertyps der Funktion unterschieden werden können, sodass beim Aufruf keine Verwirrung entsteht. Das heißt, beim Aufruf sind die Methodennamen zwar gleich, die entsprechenden Funktionen können jedoch automatisch entsprechend unterschiedlichen Parametern aufgerufen werden.

php ist nicht einfach zu implementieren.

kann dazu führen, dass eine Methode in der Klasse mehrere Effekte erzeugt und je nach den verschiedenen übergebenen Parametern unterschiedliche Logik ausgeführt werden kann.

hat die folgenden Anforderungen:

1. Bei Verwendung von Überladung kann dies nur durch denselben Methodennamen und unterschiedliche Parameterformen erreicht werden. Verschiedene Parametertypen können unterschiedliche Parametertypen, unterschiedliche Parameternummern und unterschiedliche Parameterreihenfolgen sein (Parametertypen müssen unterschiedlich sein

2. Überladung kann nicht durch Zugriffsberechtigungen, Rückgabetypen und ausgelöste Ausnahmen erfolgen; Der Ausnahmetyp und die Anzahl der Methoden haben keinen Einfluss auf die Überladung.

<?php
class fu
{
    public function text(){
        echo &#39;父类&#39;;
    }
    public  function  textt(){
        echo &#39;父亲&#39;;
    }
}
class erzi extends fu
{

        function test($name)
        {
            //方法重载
            parent::text();//我要父类的东西
            echo "erzi",$name;//重写

        }
    }

$erzi = new fu();
$erzi-> text("123");
?>

Überschreibungen gibt es nur in Unterklassen und übergeordneten Klassen, und Überladungen gibt es in einer Klasse.

Override ist Umschreiben

Überlastung ist Überladung

Weitere Informationen zum Umschreiben und Überladen finden Sie auf der chinesischen PHP-Website:

PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen PHP-Neuladen und Umschreiben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen