为了账号安全,请及时绑定邮箱和手机立即绑定

class Truck extends Car{ public function speedUp(){ $this->speed=parent::speedUp()+50; } }

1、parent::speedUp()这里为什么要这样写呢

2、还有事速度累加50,意思是说在父类speed已经加上10的基础上再加50吗?还是说在speed=0的基础上加50

正在回答

5 回答

<?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()方法。

1 回复 有任何疑惑可以回复我~

子类覆盖父类的方法是要通过在子类中重新编写新的方法,如果不更改的话,则默认子类继承父类的方法。例如

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方法。也就是说,如果儿子有能力(指重写了方法),那么就能够继承父亲的财产(父类的方法)并且把它发扬光大(重写);如果儿子没能力(没有重写方法),那么久只能够啃老(调用父类的方法)。这样希望能帮你理解吧。


1 回复 有任何疑惑可以回复我~
#1

qq_伊藤_03776080 提问者

好的好的谢谢!
2017-05-12 回复 有任何疑惑可以回复我~

那这样通过子类调用父类的方法就可以覆盖父类里面的speedUp方法了吗?为什么呀?

0 回复 有任何疑惑可以回复我~

1、parent::speedUp() 是指调用父类的speedUp()方法,此时已经执行了$this->speed += 10; speed变为10;

2、累加的意思是在10的基础上在增加50.

1 回复 有任何疑惑可以回复我~

子类调用父类方法要这么用 parent::speedUp()

他这里累加50的意思应该是,父类speed基础上加50;

因为parent::speedUp()这里已经调用了父类里speedUp()这个方法,speed已经=10;后面再加50,输出就是60了;

2 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

class Truck extends Car{ public function speedUp(){ $this->speed=parent::speedUp()+50; } }

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信