=========================================
* 继承 extends
*=========================================
*1.PHP只支持类单继承,但可以继承多个接口
*2.只继承父类公有和受保护的成员
*3.重写Overwritte:子类中的方法名如果和父类的方法名相同,则会重写父类的方法
*4.子类重写父类的方法时,方法访问修饰符不能低于父类中方法的修饰符
*5.子类如果要调用父类的构造函数,必须显式调用parent::__construct();/Person::__construct();
*/
/**
* Person
* 这个例子:
* 子类继承了父类,同时继承了public和protected成员的方法和属性,但不能继承private成员
* 调用了父类的构造函数
* 重写了父类的方法say()
*/
<?php class Person { public $name; public $age; public $sex; function __construct() { echo "这是父类Person中的构造函数"." "; } protected function Say() { echo "这是父类Person中的say()"." "; } } /** * Chinese */ class Chinese extends Person { function __construct($name,$age,$sex) { parent::__construct();//显式调用父类的构造函数 //Person::__construct(); echo "这是子类Chinese中的构造函数"." "; $this->name=$name; $this->age=$age; $this->sex=$sex; } public function Say() //对父类方法的重写 { echo "我是中国人,我叫:".$this->name.",今年:".$this->age."岁了".",性别:".$this->sex." "; } private function Work() { echo "我是中国人,我在耕田"." "; } } /** * Chinese */ class Bejing extends Chinese { function __construct($name,$age,$sex) { parent::__construct("","","");//显式调用父类的构造函数 //Person::__construct(); echo "这是子类Bejing中的构造函数"." "; $this->name=$name; $this->age=$age; $this->sex=$sex; //parent::Work();//Fatal error: Call to private method Chinese::Work()//不能继承私有的成员 } public function Say() //对父类方法的重写 { echo "我是北京人,我叫:".$this->name.",今年:".$this->age."岁了".",性别:".$this->sex." "; } } /** * English */ class English extends Person { function __construct($name,$age,$sex) { echo "这是子类English中的构造函数"." "; $this->name=$name; $this->age=$age; $this->sex=$sex; } public function Say() //对父类方法的重写 { echo "我是英国人,叫:".$this->name.",今年:".$this->age."岁了".",性别:".$this->sex." "; } } //调用: $p1 = new Chinese("杰克",19,"男"); $p1->Say(); $b1 = new Bejing("小王",19,"女"); $b1->Say(); $p2 = new English("jack",24,"男"); $p2->Say(); //输出结果>>>: // 这是父类Person中的构造函数 // 这是子类Chinese中的构造函数 // 我是中国人,我叫:杰克,今年:19岁了,性别:男 // 这是父类Person中的构造函数 // 这是子类Chinese中的构造函数 // 这是子类Bejing中的构造函数 // 我是北京人,我叫:小王,今年:19岁了,性别:女 // 这是子类English中的构造函数 // 我是英国人,叫:jack,今年:24岁了,性别:男 ?>