Maison  >  Article  >  développement back-end  >  Comment hériter des méthodes de classe parent en php

Comment hériter des méthodes de classe parent en php

coldplay.xixi
coldplay.xixioriginal
2020-10-07 14:40:523447parcourir

php hérite de la méthode de la classe parent : utilisez la classe Student pour hériter de la classe Person, le code est [class Student extends Person{private $school;function __construct($name="",$sex="male "}].

Comment hériter des méthodes de classe parent en php

php hérite de la méthode de la classe parent :

Vous ne pouvez pas définir des fonctions portant le même nom dans PHP, y compris les fonctions qui ne peuvent pas être utilisées avec le même nom. Une méthode portant le même nom est définie dans une classe, il n'y a donc pas de surcharge de méthode. Une méthode portant le même nom que la classe parent peut être définie dans une sous-classe, car. la méthode de la classe parent existe déjà dans la sous-classe, il n'y a donc pas de surcharge de méthode dans la sous-classe. Vous pouvez remplacer les méthodes héritées de la classe parent

La méthode de substitution de la classe parent dans la sous-classe est. pour écraser les méthodes héritées de la classe parent dans la sous-classe, et les méthodes de la classe parent sont remplacées par la sous-classe. Ne pouvons-nous pas simplement l'utiliser si nous en héritons ? Pourquoi devons-nous la remplacer ? est une classe "bird" dans laquelle la méthode générale "fly" est définie. Comme sous-classe, la classe "autruche" héritera de la méthode "fly", mais dès que la méthode "fly" de la classe "autruche" est définie. appelé, l'autruche s'envolera, mais d'autres caractéristiques ont les caractéristiques des "oiseaux", donc lors de la déclaration de la classe "autruche", vous pouvez toujours hériter de la classe "oiseau", mais du "vol" hérité de "l'oiseau". "La classe "autruche" doit être ajoutée à la classe "autruche". "La réécriture de méthode nécessite de surcharger les méthodes de la classe parent dans la sous-classe.

Dans l'exemple suivant, il y a une méthode "parlante" dans la classe Personne déclarée. Après la classe Student hérite de la classe Person, elle peut utiliser directement la méthode "speak". Cependant, la méthode "speak" de la classe Person ne peut parler que de ses propres attributs de membre, et la classe Student étend la classe Person et ajoute plusieurs nouveaux membres. attributs. Le code est le suivant :

<?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(); //调用学生类中覆盖父类的说话方法
?>

Le résultat de sortie après l'exécution du programme modifié est :

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

En PHP, la fonction d'appeler la méthode surchargée de la classe parent dans la méthode surchargée. de la sous-classe est fournie. Dans les méthodes remplacées par la sous-classe, continuez à utiliser les méthodes héritées et remplacées de la classe parent, puis ajoutez de nouvelles fonctions si nécessaire. Le format d'appel consiste à utiliser "parent : nom de la méthode" dans le fichier. méthode surchargée de la sous-classe. Appelez la méthode substituée dans la classe parent. Modifiez le code dans l'exemple ci-dessus et utilisez "parent::__construct()" dans le constructeur substitué de la sous-classe pour appeler le constructeur substitué dans la classe parent et ajoutez-le. un de plus Le code pour initialiser les attributs de membre nouvellement étendus dans la sous-classe utilise "parent::say()" dans la méthode say() remplacée dans la sous-classe pour appeler la méthode say() substituée dans la classe parent, puis ajoute la sortie . La fonction de l'attribut membre de la sous-classe est la suivante :

<?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(); //调用学生类中覆盖父类的说话方法
?>

La sortie de l'exemple ci-dessus est la même que celle de l'exemple précédent, mais dans ce cas, elle est transmise directement dans la sous-classe. appeler les méthodes remplacées dans la classe parent. De plus, lorsqu'une sous-classe substitue une méthode d'une classe parent, il faut noter que les autorisations d'accès des méthodes substituées dans la sous-classe ne doivent pas être inférieures aux autorisations d'accès des méthodes substituées de la classe parent. Par exemple, si l'autorisation d'accès dans la classe parent est protégée, l'autorisation de la méthode remplacée dans la classe enfant doit être protégée ou publique.

Recommandations d'apprentissage gratuites associées :
programmation php

(vidéo)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn