PHP中类的继承特性之方法的重载(覆盖)

来源:互联网 发布:移动宽带看网络电视 编辑:程序博客网 时间:2024/06/05 20:02
<?php
/*类的继承特性之重载(也叫覆盖):
1.说的意思指的是子类可以重新定义一个和父类相同名字的方法,从而覆盖掉原来父类的方法,加上自己新添加的功能;
2.若原封不动的覆盖容易造成代码的重复(因为又得重新在子类中写一次原来父类中本来就有的功能),所以可以用"父类名::
父类方法()"的形式来输出原来父类本来就有的功能,这样就可以实现子类功能的扩展;
3.对象访问成员用"->",而类访问成员用"::";
4.由于父类名称可能改变,所以子类覆盖父类中的方法时可以采用关键字parent来代替父类名称使用,便于后期编程的修改;
5.若子类去覆盖父类中的构造方法,一定要在构造方法的最上面先调用一下父类的构造方法;
6.权限的问题:子类的权限一定要大于等于父类的权限,比如父类中成员方法为public时,子类继承过来的成员方法只能为public;
而父类中成员方法为protected时,子类中继承的权限只能为protected或者public
*/

class person{
protected $name;
protected $age;
public $sex;
function __construct($name,$age,$sex){
$this->name=$name;
$this->age=$age;
$this->sex=$sex;
}
//父类中say()方法的权限为protected
protected function say(){
echo "我的名字是{$this->name},我的年纪是:{$this->age},我的性别为:{$this->sex}<br>";
}
function eat(){

}
function run(){

}
}
class student extends person{
var $school;
function __construct($name,$age,$sex,$school){
parent::__construct($name,$age,$sex);
$this->school=$school;
}
//父类为protected,子类中继承的方法的权限则只能为public或者protected
protected function say(){
parent::say();
echo "我所在的学校是{$this->school}";
}
function study(){
$this->say();
echo "111111111";
}
}
$stu=new student("刘仁","20","男","大梁工业大学");
$stu->study();
?>
原创粉丝点击