Heim  >  Artikel  >  Backend-Entwicklung  >  So erben Sie Methoden einer übergeordneten Klasse in PHP

So erben Sie Methoden einer übergeordneten Klasse in PHP

coldplay.xixi
coldplay.xixiOriginal
2020-10-07 14:40:523379Durchsuche

php erbt die Methode der übergeordneten Klasse: Verwenden Sie die Student-Klasse, um die Person-Klasse zu erben. Der Code lautet [class Student erweitert Person{private $school;function __construct($name="",$sex="male"}].

So erben Sie Methoden einer übergeordneten Klasse in PHP

php erbt übergeordnete Klassenmethoden:

Sie können in PHP keine Funktionen mit demselben Namen definieren, einschließlich Methoden mit demselben Namen in derselben Klasse, daher gibt es keine Methodenüberladung, die in a definiert werden kann Unterklasse. Methoden mit demselben Namen wie die übergeordnete Klasse, da die Methoden der übergeordneten Klasse bereits in der untergeordneten Klasse vorhanden sind, sodass die von der übergeordneten Klasse geerbten Methoden in der untergeordneten Klasse überschrieben werden können

Die Methoden der übergeordneten Klasse können Überschreiben Sie einfach die von der übergeordneten Klasse geerbten Methoden. Können die Methoden in der übergeordneten Klasse nicht direkt verwendet werden, wenn sie von der Unterklasse geerbt werden? Situationen, in denen wir sie überschreiben müssen. Es gibt eine „bird“-Klasse, in der die allgemeine Methode „fly“ von Vögeln definiert ist. Wenn die „ostrich“-Klasse als ihre Unterklasse verwendet wird, wird die „fly“-Methode geerbt Sobald „Strauß“ aufgerufen wird, wird die „Fliegen“-Methode in der Klasse vererbt. Obwohl Strauße nicht fliegen können, haben andere Eigenschaften die Eigenschaften von „Vögeln“. Sie können „bird“ weiterhin erben, wenn Sie die Klasse „Ostrich“ deklarieren, aber die von der Klasse „Bird“ geerbte Methode „Fly“ muss in der Klasse „Ostrich“ neu geschrieben werden, und die Methode in der übergeordneten Klasse muss neu geschrieben werden In der Unterklasse überschrieben

Im folgenden Beispiel gibt es eine „Speak“-Methode in der Person-Klasse. Die „Speak“-Methode kann jedoch direkt von der Person-Klasse geerbt werden. Die Methode in der Person-Klasse kann nur ihre eigenen Mitgliedsattribute sprechen, während die Student-Klasse Operationen für die Person-Klasse ausführt. 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 Programms ist :

我的名字叫:张三,性别:男,我的年龄是:20,在..学校上学

In PHP ist es vorgesehen, die überschriebene Methode in der überschriebenen Methode aufzurufen. Auf diese Weise können Sie die von der übergeordneten Klasse geerbte Methode weiterhin verwenden Von der Unterklasse überschrieben und dann nach Bedarf einige neue Funktionen hinzugefügt. Das Format des Aufrufs besteht darin, die überschriebene Methode in der übergeordneten Klasse aufzurufen Code im obigen Beispiel und verwenden Sie „parent::__construct()“ im überschriebenen Konstruktor der Unterklasse, um die Methode in der übergeordneten Klasse aufzurufen. Fügen Sie für den überschriebenen Konstruktor einen weiteren Code hinzu, um die neu erweiterten Mitgliedseigenschaften in der Unterklasse zu initialisieren. Verwenden Sie „parent::say()“ in der in der Unterklasse überschriebenen Methode say(), um die überschriebene Methode in der übergeordneten Klasse aufzurufen. 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, aber in diesem Fall wird es in der Unterklasse übergeben. Es ist viel einfacher, die überschriebene Methode direkt in der übergeordneten Klasse 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 kostenlose Lernempfehlungen:
php-Programmierung

(Video)

Das obige ist der detaillierte Inhalt vonSo erben Sie Methoden einer übergeordneten Klasse 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