Heim  >  Artikel  >  Backend-Entwicklung  >  Wie verwende ich parent:: in PHP?

Wie verwende ich parent:: in PHP?

伊谢尔伦
伊谢尔伦Original
2017-07-08 09:57:429093Durchsuche

Sie können in PHP keine Funktionen mit demselben Namen definieren, einschließlich Methoden mit demselben Namen, die nicht in derselben Klasse definiert werden können, daher gibt es keine Methodenüberladung . 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, haben andere Merkmale die Eigenschaften von „Vögeln“. 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 die -Attribute ihrer eigenen Mitglieder 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(); //调用学生类中覆盖父类的说话方法
?>

Nach dem Ausführen des geänderten Programms lautet das Ausgabeergebnis:

Mein Name ist: Zhang San, Geschlecht: männlich, my Alter Ja: 20, studiert an einer Edu-Schule

In PHP wird die Funktion zum Aufrufen der überschriebenen Methode der übergeordneten Klasse in der überladenen Methode der Unterklasse bereitgestellt . 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, in diesem Fall jedoch durch direkten Aufruf der übergeordneten Klasse in der Unterklasse Die Abdeckmethode ist viel einfacher. 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.

Das obige ist der detaillierte Inhalt vonWie verwende ich parent:: in PHP?. 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