Heim  >  Artikel  >  Backend-Entwicklung  >  In PHP überladen Unterklassen die Methoden der übergeordneten Klasse (parent::method name)

In PHP überladen Unterklassen die Methoden der übergeordneten Klasse (parent::method name)

不言
不言Original
2018-06-02 10:08:102300Durchsuche

In diesem Artikel wird hauptsächlich der relevante Inhalt von Unterklassen vorgestellt, die übergeordnete Klassenmethoden (parent::method name) in PHP überladen. Alle werden zu Ihrer Information mit allen geteilt.

Überladung kann nicht in PHP-Funktionen mit derselben definiert werden name umfassen auch Methoden mit demselben Namen, die nicht in derselben Klasse definiert werden können, sodass es nicht zu einer Methodenüberladung kommt. Methoden mit demselben Namen wie die der übergeordneten Klasse können nur in der Unterklasse definiert werden, da die Methoden der übergeordneten Klasse bereits in der Unterklasse vorhanden sind, sodass die von der übergeordneten Klasse geerbten Methoden in der Unterklasse überschrieben werden können.

Die Methode zum Überschreiben der übergeordneten Klasse in einer Unterklasse besteht darin, die von der übergeordneten Klasse in der Unterklasse geerbten Methoden zu überschreiben. Die Methoden in der übergeordneten Klasse können nicht direkt verwendet werden, wenn sie von geerbt werden die Unterklasse? Warum müssen wir es überladen? Denn es gibt einige Situationen, die wir abdecken müssen. Beispielsweise gibt es eine Klasse „Bird“, in der die allgemeine Methode „Fly“ für Vögel definiert ist. Wenn Sie die Klasse „Strauß“ als Unterklasse verwenden, wird die Methode „Fliegen“ geerbt. Sobald jedoch die Methode „Fliegen“ in der Klasse „Strauß“ aufgerufen wird, fliegt der Strauß davon. Obwohl Strauße nicht fliegen können, weisen andere Merkmale die Eigenschaften von „Vögeln“ auf. Daher können Sie bei der Deklaration der Klasse „Strauß“ immer noch die Klasse „Vogel“ erben, müssen jedoch die Klasse „Vogel“ zur Klasse „Strauß“ hinzufügen Um die von der Klasse geerbte „fliegende“ Methode neu zu schreiben, müssen Sie die Methode in der übergeordneten Klasse in der Unterklasse überladen.

Im folgenden Beispiel verfügt die deklarierte Person-Klasse über eine „Speak“-Methode. Die Student-Klasse kann die „Speak“-Methode direkt verwenden, nachdem sie die Person-Klasse geerbt hat. Allerdings kann die „speak“-Methode in der Person-Klasse nur ihre eigenen Mitgliedsattribute sprechen, während die Student-Klasse die Person-Klasse erweitert und mehrere neue Mitgliedsattribute hinzufügt. Der Code lautet wie folgt:

<?php
class Person{
protected $name;
protected $sex;
protected $Wage;
function __construct($name="",$sex="男",$age=1){
$this ->name = $name;
$this ->sex = $sex;
$this ->age = $age;
}
//在人类中声明一个通用的说话方法,介绍一下自己
function say(){
echo "我的名字:".$this-> name.",性别:".$this ->sex.",年龄:".$this ->age."。<br>";
}
}
//声明一个学生类,使用extends关键字扩展(继承)person类
class Student extends Person {
private $school; //在学生类中声明一个所在学校school的成员属性
//覆盖父类中的构造方法,在参数列表中添加一个学校属性,用来创建对象并初始化成员属性
function __construct($name="",$sex="男",$age=1,$school=""){
$this ->name = $name;
$this ->sex = $sex;
$this ->age = $age;
$this ->school = $school;
}
function study(){
echo $this ->name."正在".$this ->school."学习<br>";
}
//定义一个和父类中同名的方法,将父类中的说话方法覆盖并重写,多说出所在的学校名称
function say(){
echo "我的名字:".$this ->name.",性别:".$this ->sex.",年龄:".$this ->age.",在".$this ->school."学校上学<br>";
}
}
$student= new Student("张三","男",20,"edu"); //创建一个学生对象,并传给一个学校名称参数
$student -> say(); //调用学生类中覆盖父类的说话方法
?>

Das Ausgabeergebnis nach dem Ausführen des geänderten Programms ist:

Mein Name ist: Zhang San, Geschlecht: männlich, mein Alter ist: 20, ich studiere an einer Edu-Schule

In PHP, vorausgesetzt hat die Funktion, die überschriebene Methode der übergeordneten Klasse in der überladenen Methode der Unterklasse aufzurufen. Auf diese Weise können Sie in den von der Unterklasse überschriebenen Methoden weiterhin die von der übergeordneten Klasse geerbten und überschriebenen Methoden verwenden und dann nach Bedarf weitere neue Funktionen hinzufügen. Das Format des Aufrufs besteht darin, „übergeordnet: Methodenname“ zu verwenden, um die überschriebene Methode in der übergeordneten Klasse in der überladenen Methode der Unterklasse aufzurufen. Ändern Sie den Code im obigen Beispiel, verwenden Sie „parent::__construct()“ im überschriebenen Konstruktor der Unterklasse, um den überschriebenen Konstruktor der übergeordneten Klasse aufzurufen, und fügen Sie ein zusätzliches Mitgliedsattribut für das neu erweiterte Mitglied der Unterklasse hinzu Code. Verwenden Sie „parent::say()“ in der in der Unterklasse überschriebenen Methode say(), um die überschriebene Methode say() in der übergeordneten Klasse aufzurufen, und fügen Sie dann die Funktion zum Ausgeben der Mitgliedsattribute der Unterklasse hinzu.

Der Code lautet wie folgt:

<?php
class Person{
protected $name;
protected $sex;
protected $Wage;
function __construct($name="",$sex="男",$age=1){
$this ->name = $name;
$this ->sex = $sex;
$this ->age = $age;
}
//在人类中声明一个通用的说话方法,介绍一下自己
function say(){
echo "我的名字:".$this-> name.",性别:".$this ->sex.",年龄:".$this ->age."。<br>";
}
}
//声明一个学生类,使用extends关键字扩展(继承)person类
class Student extends Person {
private $school; //在学生类中声明一个所在学校school的成员属性
//覆盖父类中的构造方法,在参数列表中添加一个学校属性,用来创建对象并初始化成员属性
function __construct($name="",$sex="男",$age=1,$school=""){
//调用父类中被覆盖的构造方法,为从父类中集成过来额出行赋初值
parent::__construct($name,$sex,$age);
$this ->school = $school;
}
function study(){
echo $this ->name."正在".$this ->school."学习<br>";
}
//定义一个和父类中同名的方法,将父类中的说话方法覆盖并重写,多说出所在的学校名称
function say(){
parent::say(); //调用父类中被本方法覆盖掉的方法
echo "在".$this ->school."学校上学<br>";
}
}
$student= new Student("张三","男",20,"edu"); //创建一个学生对象,并传给一个学校名称参数
$student -> say(); //调用学生类中覆盖父类的说话方法
?>

Das Ausgabeergebnis des obigen Beispiels ist das gleiche wie im vorherigen Beispiel, jedoch In diesem Fall ist es in diesem Beispiel viel einfacher, die überschriebene Methode in der übergeordneten Klasse direkt in der Unterklasse aufzurufen. Wenn eine Unterklasse eine Methode einer übergeordneten Klasse überschreibt, muss außerdem beachtet werden, dass die Zugriffsberechtigungen der überschriebenen Methoden in der Unterklasse nicht niedriger sein dürfen als die Zugriffsberechtigungen der überschriebenen Methoden der übergeordneten Klasse. Wenn beispielsweise die Zugriffsberechtigung in der übergeordneten Klasse geschützt ist, muss die Berechtigung der überschriebenen Methode in der untergeordneten Klasse geschützt oder öffentlich sein.

Verwandte Empfehlungen:

Methoden zum Überladen von Unterklassen in PHP, PHP-Annotationsmethoden, PHP-Timing-Methoden, PHP-Systemautorisierer

Das obige ist der detaillierte Inhalt vonIn PHP überladen Unterklassen die Methoden der übergeordneten Klasse (parent::method name). 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