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

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

 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 回答

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


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

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

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

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

慕姐4424294 提问者

非常感谢!万分感谢啊
2015-12-05 回复 有任何疑惑可以回复我~
#2

木子舟义 回复 慕姐4424294 提问者

不客气 加油
2015-12-05 回复 有任何疑惑可以回复我~

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

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

慕姐4424294 提问者

Fatal error: Call to undefined method BigCar::getSpeed() in /26/544/903x/index.php on line 17
2015-12-05 回复 有任何疑惑可以回复我~
#2

慕姐4424294 提问者

大哥 还有个问题想问下 第一 为什么会出现 静态属性 静态方法呢?这个静态 有啥用啊?和前面学的普通 属性 普通方法 有啥区别啊? 第二 我问下 比如一个类 他的属性是 静态了 那么 它里面的方法 也必须是静态么? 第三 比如一个类 它的里面的属性 是私有静态的 那么我想获得这个属性 就需要 用一个公共的 静态方法来获得?还是公共的普通方法 来获得? 万分感谢啊!!!!
2015-12-05 回复 有任何疑惑可以回复我~
#3

qq_贫道法号劫财_0 回复 慕姐4424294 提问者

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

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();  


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

你把代码发给我看一下

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

慕姐4424294 提问者

超过三百字 我提问 的代码 就是啊 你可以把// 内容去掉 就好了
2015-12-05 回复 有任何疑惑可以回复我~

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

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

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

慕姐4424294 提问者

可是我去掉 这个 方法 public static function getSpeed() { return self::$speed; } 就会报错啊 为什么呢
2015-12-05 回复 有任何疑惑可以回复我~
#2

慕姐4424294 提问者 回复 慕姐4424294 提问者

我理解 是不是 把这个删除 那么 父类 里面 那个speedUp() 方法 就不能运行了啊? 因为没有提取 父类 里面 私有属性$speed呢?是这样么? 我必须先用 getSpeed() 这个方法 提取 出来这个私有的属性 然后 在用speedUp()这个方法 自加呢? 可以这么理解么 万分感谢
2015-12-05 回复 有任何疑惑可以回复我~
#3

qq_贫道法号劫财_0 回复 慕姐4424294 提问者

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

举报

0/150
提交
取消

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

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