求老师、大神 解释

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

mameng110

2017-06-02 09:57

class Truck extends Car{

   function  __construct(){

       $this->speed +=50;

   }

}


写回答 关注

4回答

  • 月言0_0
    2017-07-12 09:13:52

    你这是构造函数,我个人认为,根据题意说要覆盖speedUp函数,应该这样写,

    public function speedUp(){
            $this->speed+=50;
            return $this->speed;
        }

    我认为这样是实现了函数覆盖,但答案说结果为60我就实在不能理解,在答案区也见不到此类回答。我百度一下PHP的覆盖方法,得到如下结果,

    所谓覆盖,从本质上来说就是重写。就是当子类继承父类的一些方法后,子类又在其内部定义了相同的方法,则这个新定义的方法会覆盖继承而来的父类的方法,子类只能调用其内部定义的方法。

    有以下几点要求:

    1.当一个父类和子类有一个方法,参数和名字完全一致,那么子类方法会覆盖父类的方法。

    2.在实行方法覆盖的时候,访问修饰符可以是不一样的,但是子类的访问范围必须大于等于父类的访问范围。

    3.要求参数和名字一样。并不是要求子类,父类名称相同。

    综上,我觉得我这种做法才是实现了覆盖,希望能对你有所帮助。

    该用户已注册

    我也觉得你是对的,如果非要咬字眼的话,累加50,可能是在原来的基础上加50,也就是先调用父的,再加50

    2017-09-26 14:08:37

    共 2 条回复 >

  • 有为小青年丶
    2017-07-03 19:37:19
    <?php
    class Car {
        public $speed = 0; //汽车的起始速度是0
        public function speedUp() {
            $this->speed += 10;
            return $this->speed;
        }
    }
    // 定义继承于Car的Truck类
    class Truck extends Car{
        // 构造函数,类被实例化的时候立即执行构造函数
        function __construct(){
            $this->speed += 50; // 类的属性(speed)增加50,如果在当前类中没有找到属性(speed)就去父类Car中寻找
        }
    }
    $car = new Truck();// 实例化Truck类
    $car->speedUp(); // 调用类方法speedUp();如果在当前类中没有找到方法(speedUp)就去父类Car中寻找
    echo $car->speed; // 输出类的属性(speed):60


  • qq_十年_49
    2017-06-02 10:57:12

    Truck 是Car的子类,$this->speed指针指向Truck类的speed,也就是父类的speed,因为是继承来的嘛。然后就是把speed累加50.

  • qq_studyhard_0
    2017-06-02 10:52:16

    表示类Truck继承了Car,并给它写了一个构造函数,在函数里将speed的值加50


PHP进阶篇

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

181732 学习 · 2575 问题

查看课程

相似问题