Beim Erlernen von PHP werden Sie feststellen, dass Methoden in PHP nicht überladen werden können Die sogenannte Methodenüberladung besteht darin, den gleichen Methodennamen durch „Die Anzahl der Parameter oder“ zu definieren Die Art der Parameter ist unterschiedlich, um auf verschiedene Methoden mit demselben Methodennamen zuzugreifen.
12. Neue Methoden überladen
Beim Erlernen von PHP werden Sie feststellen, dass Methoden in PHP nicht überladen werden können.
Definieren Sie den gleichen Methodennamen und greifen Sie auf verschiedene Methoden mit demselben
Namen zu, indem Sie unterschiedliche „Anzahl von Parametern“ oder unterschiedliche „Parametertypen“ verwenden. Da PHP jedoch eine schwach typisierte Sprache ist, kann es in den Parametern der Methode selbst unterschiedliche Datentypen empfangen. Und da die PHP-Methode eine unbegrenzte Anzahl von Parametern empfangen kann, kann sie durch Übergabe einer unterschiedlichen Anzahl von Parametern aufgerufen werden 🎜>Unterschiedliche Methoden mit unterschiedlichen Methodennamen sind ebenfalls nicht gültig. Daher gibt es in PHP keine Methodenüberladung. Es kann nicht überladen werden, was bedeutet, dass Methoden mit demselben Methodennamen nicht in
Ihrem Projekt definiert werden können. Da PHP außerdem nicht über das Konzept des Namensunterraums verfügt, können Methoden mit demselben Namen nicht auf derselben Seite
und den eingeschlossenen Seiten definiert werden, noch können sie mit demselben Namen wie die von PHP bereitgestellte Methode definiert werden Kurs
Methoden mit demselben Namen können nicht in derselben Klasse definiert werden.
Was meinen wir hier mit der Überlastung neuer Methoden? Tatsächlich nennen wir das Überladen einer neuen Methode, dass die Unterklasse
die vorhandene Methode der übergeordneten Klasse überschreibt. Warum machen wir das also? Können die Methoden der übergeordneten Klasse nicht direkt geerbt und verwendet werden? Aber
Es gibt einige Situationen, die wir abdecken müssen. In dem Beispiel, das wir zuvor erwähnt haben, hat der Mensch „Person“
beispielsweise eine „Speak“-Methode, und alle, die die „Person“-Klasse erben, sind alle Unterklassen können „sprechen“. Unsere „Student“-
-Klasse ist eine Unterklasse der „Person“-Klasse, daher können Instanzen von „Student“ „sprechen“, aber Menschen „sprechen
-Wörter“. 🎜>Attribute
in der Klasse „Person“, und die Klasse „Student“ erweitert die Klasse „Person“ und fügt mehrere neue Attribute hinzu. Wenn Sie die geerbte Sprechmethode „say()“ verwenden, können Sie diese nur sprechen Attribute von der Klasse
„Person“ geerbt, dann verwenden die neu erweiterten Attribute dieses geerbte „say()“ Ich kann die Methode nicht beschreiben, daher haben einige Leute gefragt, ob ich eine neue Methode in der Klasse definiere „Student“-Unterklasse, um zu sprechen, würde es nicht ausreichen, nur alle Attribute in der Unterklasse zu benennen? Stellen Sie sicher, dass Sie dies nicht tun. Aus abstrakter Sicht kann ein „Schüler“ nicht zwei Arten des „Sprechens“ haben. Selbst wenn Sie zwei verschiedene Sprechmethoden definieren, können Sie die gewünschte Funktion erreichen. Die Methode „Sprechen“ kann möglicherweise nicht verwendet werden, und Sie können sie nicht löschen, wenn sie vererbt wird.
Zu diesem Zeitpunkt verwenden wir Overlay.
Obwohl Methoden mit demselben Namen in PHP nicht definiert werden können, können wir in den beiden Klassen mit einer Eltern-Kind-Beziehung Methoden mit demselben Namen wie die übergeordnete Klasse in der Unterklasse
definieren und so die Methoden von erben Die übergeordnete Klasse wird überschrieben.
Codeausschnitt
Der Code lautet wie folgt:
Im obigen Beispiel überschreiben wir „say()“ in der geerbten übergeordneten Klasse im „ Student"-Unterklasse"-Methode, indem wir sie mit
abdecken, können wir die „Methode“ erweitern.
nicht aus nur einem Code oder mehreren Codes bestehen, wie es beispielsweise die Methode „say(“ in der Klasse „Person“)“ hat 100 Zeilen Code darin. Wenn wir zum Beispiel
diese Methode überschreiben und die ursprünglichen Funktionen sowie etwas mehr beibehalten möchten, müssen wir die ursprünglichen 100 Zeilen Code einmal neu schreiben<?php //定义一个“人”类做为父类 class Person{ //下面是人的成员属性 var $name; //人的名子 var $sex; //人的性别 var $age; //人的年龄 //定义一个 构造方法 参数为属性姓名$name、性别$sex和年龄$age进行赋值 function construct($name, $sex, $age){ $this->name=$name; $this->sex=$sex; $this->age=$age; } //这个人可以说话的方法, 说出自己的属性 function say() { echo "我的名子叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."<br>"; } } class Student extends Person { var $school; //学生所在学校的属性 //这个学生学习的方法 function study() { echo "我的名子叫:".$this->name." 我正在”.$this->school.”学习<br>"; } //这个学性可以说话的方法, 说出自己所有的属性,覆盖了父类的同名方法 function say() { echo "我的名子叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."我在 ".$this->school."上学.<br>"; } } ?>
. Wie schreiben Sie den Originalcode zu diesem Zeitpunkt neu? Wir haben auch eine Lösung: Sie können in der Unterklassenmethode
die überschriebene Methode in der übergeordneten Klasse aufrufen, dh die ursprünglichen Funktionen der überschriebenen Methode übernehmen und Ihre eigene
Funktion hinzufügen Verwenden Sie zwei Methoden, um die überschriebene Methode der übergeordneten Klasse in der Methode der Unterklasse aufzurufen:
Eine besteht darin, den „Klassennamen::“ der übergeordneten Klasse zu verwenden, um die überschriebene Methode der übergeordneten Klasse aufzurufen Eine besteht darin, die Methode „parent::“ zu verwenden, um die überschriebene Methode in der übergeordneten Klasse aufzurufen.
Codeausschnitt
Der Code lautet wie folgt:
Jetzt können Sie auf zwei Arten auf die überschriebenen Methoden in der übergeordneten Klasse zugreifen. Welche Methode sollten wir am besten wählen? Benutzer können
会发现自己写的代码访问了父类的变量和函数。如果子类非常精炼或者父类非常专业化的时
候尤其是这样。不要用代码中父类文字上的名字,应该用特殊的名字parent,它指的就是子
类在extends 声明中所指的父类的名字。这样做可以避免在多个地方使用父类的名字。如果继
承树在实现的过程中要修改,只要简单地修改类中extends 声明的部分。
同样,构造方法在子类中如果没有声明的话,也可以使用父类中的构造方法,如果子类
中重新定义了一个构造方法也会覆盖掉父类中的构造方法,如果想使用新的构造方法为所有
属性赋值也可以用同样的方式。
代码片段
代码如下:
class Student extends Person{ var $school; //学生所在学校的属性 function construct($name, $sex, $age, $school){ //使用父类中的方法为原有的属性赋值 parent::construct($name, $sex, $age); $this->school=$school; } //这个学生学习的方法 function study() { echo "我的名子叫:".$this->name." 我正在”.$this->school.”学习<br>"; } //这个人可以说话的方法, 说出自己的属性 function say() { parent::say(); //加上一点自己的功能 echo “我的年龄是:".$this->age."我在".$this->school."上学.<br>";
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der neuen Methodeninstanzüberladung in PHP objektorientiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!