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

来源:2-8 PHP类和对象之对象继承

qq_伊藤_03776080

2017-05-02 10:25

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

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

写回答 关注

5回答

  • qq_国徽_0
    2017-05-02 10:46:46
    已采纳
    <?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()方法。

  • 梵音音音
    2017-05-03 10:13:08

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

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


    qq_伊藤_...

    好的好的谢谢!

    2017-05-12 13:41:29

    共 1 条回复 >

  • qq_伊藤_03776080
    2017-05-02 11:13:38

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

  • 梵音音音
    2017-05-02 10:42:39

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

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

  • 窜天吼猴
    2017-05-02 10:37:38

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

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

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

PHP进阶篇

轻松学习PHP中级课程,进行全面了解,用PHP快速开发网站程序

181734 学习 · 2575 问题

查看课程

相似问题