
动物的属性比生物多

<?phpclass Animal{public $name='小芳';public function eat(){echo '我会吃饭';}}//Person类继承自Animal类class Person extends Animal{//子类继承了父类,那么就拥有父类的属性和方法//子类拥有父类的所有属性,还有自己独有的属性public $age=10;}$xiaoming=new Person();//echo $xiaoming->name; //小芳//$xiaoming->eat();//我会吃饭echo $xiaoming->age; //10
访问权限
<?phpclass Person{public $name;protected $age;private $height;public function __construct($name,$age,$height){$this->name=$name;$this->age=$age;$this->height=$height;}}//在类的外部只能直接访问公共属性public$xiaoming=new Person('小明',10,176);echo $xiaoming->name;//小明echo $xiaoming->age;//报错echo $xiaoming->height;//报错
如果在继承里面呢?
<?phpclass Animal{public $name='科比';protected $age=35;private $height=2;}class Person extends Animal //Person继承自Animal类{ //如果直接写function,前面不写public,默认代表这个方法的属性是publicpublic function say(){echo '我的姓名是:'.$this->name.'<br />';echo '我的年龄是:'.$this->age.'<br />';echo '我的身高是:'.$this->height.'<br />';}}$ming=new Person();$ming->say();

我们可以看到public和protected都已经继承过来了,但是private属性没有继承过来

重写方法:override

重写是一种多态,封装、继承、多态是我们面向对象语言的三大特征。
多态就是给不同的对象执行相同的接口,得到的反馈是不一样的
完全重写:
<?phpclass Father{public function jump(){echo '我能跳3米<br />';}}class Son extends Father{//父类的方法不适合子类使用,那么这个时候子类可以重写父类的方法//完全重写public function jump(){echo '我能跳5米<br />';}}//子类调用的方法是子类重写后的方法,父类还是调用父类的方法$fa=new Father();$fa->jump();$ming = new Son();$ming->jump();
在父类的基础上增加自己的功能(通过parent):先执行父类的方法再执行自己的功能
<?phpclass Father{public $name;public $age;public function __construct($name,$age){$this->name=$name;$this->age=$age;}public function jump(){echo '我能跳3米<br />';}public function work(){echo '我勤勤恳恳的工作<br />';}}class Son extends Father{public $height;public $weight;public function __construct($name,$age,$height,$weight){parent::__construct($name,$age);//在父类的基础上增加自己的功能 用parent调用父类方法$this->height=$height;$this->weight=$weight;}public function jump(){echo '我能跳5米<br />';}public function work(){//在父类的基础上增加自己的功能,这种重写,要首先调用父类的方法(通过parent关键字调用)parent::work();echo '我又谈了一个女朋友';}}$ming = new Son();$ming->work();/*我勤勤恳恳的工作我又谈了一个女朋友*/
final关键字:
final:修饰类class,代表这个类不能被继承
final:修饰方法method,代表这个方法不能被重写
重写中的方法权限修改:
public ====>public
protected===> protected / public
重写的时候权限只能放大不能缩小
