qq_伊藤_03776080
2017-05-02 10:25
1、parent::speedUp()这里为什么要这样写呢
2、还有事速度累加50,意思是说在父类speed已经加上10的基础上再加50吗?还是说在speed=0的基础上加50
<?php class Car { public $speed = 0; //汽车的起始速度是0 public function speedUp() { $this->speed += 10; return $this->speed; } } //定义继承于Car的Truck类 class Truck extends Car{ function speedUp () { $this -> speed = parent::speedUp(); return $this -> speed +=50; } } $car = new Truck(); $car->speedUp(); echo $car->speed;
表示子类Truck集成了父类car, 其中的parent::speedUp();表示调用父类的speedUp()方法。
子类覆盖父类的方法是要通过在子类中重新编写新的方法,如果不更改的话,则默认子类继承父类的方法。例如
class parentClass { public function test(){ echo "parent"; }}
1--> class childClass extends parent{ } 如果子类继承父类但并没有重写其中的test方法,那么则继承父类的test方法
即 $child = new childClass(); $child->test();//输出parent
2--> classchildClass extends parent{ public function test(){ echo "child"; }} 如果子类重写了方法,那么再实例化childClass类调用test方法会调用子类重写后的test方法。也就是说,如果儿子有能力(指重写了方法),那么就能够继承父亲的财产(父类的方法)并且把它发扬光大(重写);如果儿子没能力(没有重写方法),那么久只能够啃老(调用父类的方法)。这样希望能帮你理解吧。
那这样通过子类调用父类的方法就可以覆盖父类里面的speedUp方法了吗?为什么呀?
1、parent::speedUp() 是指调用父类的speedUp()方法,此时已经执行了$this->speed += 10; speed变为10;
2、累加的意思是在10的基础上在增加50.
子类调用父类方法要这么用 parent::speedUp()
他这里累加50的意思应该是,父类speed基础上加50;
因为parent::speedUp()这里已经调用了父类里speedUp()这个方法,speed已经=10;后面再加50,输出就是60了;
PHP进阶篇
181835 学习 · 2577 问题
相似问题