<?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(); ?>
转载请注明原文地址: https://www.6miu.com/read-42935.html