1、继承与扩展函数
1.子类使用extends继承父类,子类能够将父类全部内容继承,以下:
//多层继承 class Person { var $name; var $age; var $sex; function __construct(){ } function say(){ } function eat(){ echo "1111"; } function run(){ } }; class Student extends Person { var $school; function __construct(){ } function study(){ } }; class Teacher extends Student { var $gz; function teach(){ } }; $stu=new Student; $stu->eat(); /1111
2.private没法继承给子类,以下:this
class Person { private $name="liu"; var $age; var $sex; function __construct(){ } function say(){ echo $this->name; } function eat(){ echo "1111"; } function run(){ } }; class Student extends Person { var $school; function __construct(){ } function study(){ } }; class Teacher extends Student { var $dw; function teach(){ echo $this->name; } }; $teacher=new Teacher; $teacher->say();//liu 只是子类引用继承了父类的say() $teacher->teach();//error
3.protected保护权限,只能本身和子类使用,外部没法读取,以下:spa
class Person { private $name="liu"; protected $age=10; var $sex; function __construct(){ } function say(){ echo $this->age; } function eat(){ echo "1111"; } function run(){ } }; class Student extends Person { var $school; function __construct(){ } function study(){ } }; class Teacher extends Student { var $dw; function teach(){ echo $this->age; } }; $teacher=new Teacher; $teacher->say();//10 $teacher->teach();//10
4.public(默认)公开权限,全部位置均可用,再也不重复举例,各权限以下图:code
2、继承中的重载/覆盖blog
1.强类型语言中重载:方法名相同,参数或参数个数不一样 2.弱类型语言理解为覆盖:同一类中同名方法后覆盖前 3.弱类型中的重载:子类里能够写与父类同名的方法,即方法的扩展(接口、多态) 4.调用类的方法Person::say(); 5.调用父类(被覆盖)的方法(默认关键字)parent::say(); 6.__construct()也能够覆盖,但最开始必须调用父类构造函数,以下:
function __construct($name,$age,$sex,$school){ //先调用父类构造方法,不然父类初始化后,子类不变 parent::__construct($name,$age,$sex); $this->school=$school; }
7.权限:子类权限只能>=父类权限,即public > protected > private