问下 我对 这个代码的理解是否正确

来源:2-6 PHP类和对象之Static静态关键字

慕姐4424294

2015-12-05 11:43

 class Car {
   private static $speed = 10;
   
   public static function getSpeed() {
       return self::$speed;
   }
   
   public static function speedUp() {
       return self::$speed+=10;
   }
} // 这个是父类 第一个$speed  是私有的静态的属性 值是10  第二个getSpeed 是公共的静态方法 这个方法 是获取  这个父类里面的属性$speed的 self是什么意思 不清楚   然后第三个是类里面的方法  是让这个父类里面的$speed属性 自加10的意思 我不懂 第二个 方法 有啥用 就是获取么?那么 删除掉 第二个方法 直接运行 第三个方法 让$speed属性自加10不行么?第二个 方法 有什么用呢?


class BigCar extends Car {
   public static function start() {
       parent::speedUp(); //这个是子类了    这个子类里面的start()方法 就是调用 父类里面的speedUp这个 方法的
   }
}

BigCar::start();echo BigCar::getSpeed();

求高手 详细 解答 万分感谢  特别是 父类 里面的 第二个方法  我不知道有啥用  可以省略么?如果省略 会怎么样?

写回答 关注

5回答

  • 木子舟义
    2015-12-05 12:48:44
    已采纳

    你的报错问题是,你把方法删了,还去调用那个方法。echo BigCar::getSpeed();   去掉这行。


    1、静态属性 是共享的,而不是一个实例对象对应一个属性。 每一个实例对象都可以对它进行操作。

    2、静态属性可以通过普通方法调用。

    3、2都回答了可以通过普通方法调用啦。

    木子舟义 回复慕姐4424...

    不客气 加油

    2015-12-05 12:54:03

    共 2 条回复 >

  • 木子舟义
    2015-12-05 12:33:56

    我说 你删除getSpeed方法后的报错代码哦

    qq_贫道法... 回复慕姐4424...

    第一个问题我也不清楚; 第二:不需要,因为可以通过普通方法调用如class Car { private static $speed = 10; public function getSpeed() { return self::$speed; } } 第三:不需要,通过self::$speed获取就行了

    2016-05-03 21:31:37

    共 3 条回复 >

  • 慕姐4424294
    2015-12-05 12:33:28

    class Car {

        private static $speed = 10;

        public static function getSpeed() {

            return self::$speed;

        }

        public static function speedUp() {

            return self::$speed+=10;

        }

    }

    class BigCar extends Car {

        public static function start() {

            parent::speedUp();

        }

    }

    BigCar::start();

    echo BigCar::getSpeed();  


  • 木子舟义
    2015-12-05 12:29:11

    你把代码发给我看一下

    慕姐4424...

    超过三百字 我提问 的代码 就是啊 你可以把// 内容去掉 就好了

    2015-12-05 12:33:08

    共 1 条回复 >

  • 木子舟义
    2015-12-05 12:11:50

    第二个方法存在的意义是,在你不想对$speed进行 假发运算时就想得到它的值时调用它。

    你要是觉得,你每次想访问$speed值的时候 想得到的结果就是当前值 + 10 后的结果的话,可以省略

    qq_贫道法... 回复慕姐4424...

    你在Car类中定义一个公共的getSpeed(),然后让class BigCar extends(继承) Car 那么BigCar就会继承getSpeed(),最后用echo BigCar::getSpeed();调用父类的getSpeed()。当你删掉 方法 public static function getSpeed()时就会报错,因为找不到这个方法。不是因为私有属性要提取。

    2016-05-03 21:26:36

    共 3 条回复 >

PHP进阶篇

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

181728 学习 · 2575 问题

查看课程

相似问题