在子类重写的方法中,继续使用从父类中继承过来并被覆盖的方法,然后再按要求添加一些新功能。调用的格式是使用“parent::方法名”
<?php
class Person {
protected $name;
protected $sex;
protected $age;
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;
//覆盖父类中的构造方法,在参数列表中多添加一个学校属性,用来创建对象并初始化成员属性
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(); //调用学生类中覆盖父类的说话方法
?> |