Heim  >  Artikel  >  Backend-Entwicklung  >  Ausführliche Erklärung des Schlüsselworts Final im objektorientierten PHP (Codebeispiel)

Ausführliche Erklärung des Schlüsselworts Final im objektorientierten PHP (Codebeispiel)

易达
易达Original
2020-05-25 16:31:322114Durchsuche

Ziele dieses Artikels:

1. Die Definition des Final-Schlüsselworts in PHP verstehen

3 Endgültiges Schlüsselwort in PHP Verwendungsszenarien von Schlüsselwörtern

Beherrschen Sie die spezifische Implementierung des Endgültigen Schlüsselworts in PHP

Wir werden weiterhin der vorherigen konsistenten Denkweise folgen und durch die 3W1H-Methode lernen, also lassen Sie uns zunächst Verstehen Sie es

(1) Verstehen Sie die Definition des Final-Schlüsselworts in PHP (Was)

Wenn Sie final vor einer Klasse hinzufügen, kann diese Klasse nicht vererbt werden. Wenn Sie final vor a hinzufügen Methode, dann kann diese Methode nicht überschrieben werden

(2) Verstehen Sie die Rolle des Final-Schlüsselworts in PHP (Warum)

Es gibt zwei Hauptfunktionen:

1 Klassen werden vererbt

2. Verhindern Sie, dass Klassenmethoden überschrieben werden

(3) Verstehen Sie die Verwendungsszenarien des Final-Schlüsselworts in PHP (Wo)

Wenn Sie eine Klasse möchten Wenn keine Unterklasse vorhanden ist oder eine Klassenmethode nicht überschrieben werden kann, können Sie die Verwendung der endgültigen Implementierung in Betracht ziehen

(4) Beherrschen Sie die spezifische Implementierung des Schlüsselworts Final in PHP (Wie)

Zusammenfassung :

1. Das Definitionsformat der finalen Klasse ist: final class class name {}

2. Achten Sie besonders darauf, dass nur PHP5 über das Konzept des finalen Schlüsselworts verfügt nicht vor PHP5 vorhanden

3. Das Definitionsformat der endgültigen Methode ist: endgültiger öffentlicher (oder geschützter) Funktionsmethodenname (Parameter...){}

4 Als endgültige Klasse definiert, kann sie nicht vererbt werden, d basieren auf der Praxis. Als nächstes müssen wir es noch einzeln beweisen, damit wir es mit Zuversicht verwenden können

(5), spezifischer Code

1 1:

Praktische Ziele:

1 Das Definitionsformat der endgültigen Klasse ist: endgültiger Klassenname {}

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

$human = new Human();
$human->eat();
?>
Das Operationsergebnis ist:

Die Eat-Methode in Human wird ausgeführt

2. Fall 2:

Praktisches Ziel:

1 Die endgültige Methode ist: letzte öffentliche (oder geschützte) Funktion Methodenname (Parameter...){}

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

Die endgültige Eat-Methode in Human wird ausgeführt

3. Fall 3:

Praktische Ziele:

1 Sobald eine Klasse als letzte Klasse definiert ist, kann sie nicht vererbt werden, d. h. es kann keine Unterklassen haben

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

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

Schwerwiegender Fehler: Die Klasse NbaPlayer erbt möglicherweise nicht von der letzten Klasse (Human) in D:E-classclass-codeclassingindex.php in Zeile 14

4. Fall 4:

Praktische Ziele:

1. Sobald eine Methode als endgültige Methode definiert ist, kann sie nicht überschrieben werden durch eine Unterklasse

<?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/>";
    }
}
?>

und führen Sie das Ergebnis aus:

Schwerwiegender Fehler: Die endgültige Methode Human::eat() in D:E-classclass-codeclassingindex.php in Zeile 14 kann nicht überschrieben werden

(6) Wenden Sie das Gelernte an

Bisher sollten wir ein klares Verständnis für das Finale haben. Als nächstes können wir das Gelernte anwenden und das gelernte Wissen nutzen, um die folgenden Probleme zu lösen

Problem: Basierend auf jahrelanger Erfahrung können viele Datenoperationsmethoden nicht nur in einem Projekt, sondern auch in vielen Projekten wiederverwendet werden, und viele Stellen in einem Projekt können wiederverwendet werden. Deshalb planen wir, diese allgemeinen Methoden in einer Klasse zu kapseln, aber diese Klasse benötigt keine Unterklassen und ich möchte nicht, dass die darin enthaltenen Methoden überschrieben werden.

Ideenanalyse:

1. Erstellen Sie eine Klasse, die gängige Datenmanipulationsmethoden enthält

2. Weil Sie das nicht wollen Klasse soll Vererbung sein, daher können wir in Kombination mit der Rolle von final die Klasse als finale Klasse definieren

3. Sobald eine Klasse als finale Klasse definiert ist, werden die darin enthaltenen Methoden natürlich nicht überschrieben, weil Es gibt keine Unterklassen. Wie können wir es in eine Unterklasse umschreiben?


Der spezifische Code lautet wie folgt:

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

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

Die laufenden Ergebnisse sind wie folgt:

Methode zum Generieren von ZufallszahlenErklärung: Dieses Beispiel ist etwas einfach, aber ich hoffe, dass jeder auf seine Ideenanalyse achtet und so genau und klar wie möglich ist

Zusammenfassung:

1. Der Hauptinhalt dieses Artikels erläutert die Definition und Funktion von final sowie die spezifische Implementierung

Ich hoffe, dieser Artikel kann Ihnen etwas helfen. Vielen Dank euch allen! ! !

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung des Schlüsselworts Final im objektorientierten PHP (Codebeispiel). 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