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

静态方法中可以调用非静态属性么?

class Car {

    private static $speed = 10;   

    public $name = '汽车';//这里多了一个共有属性

    public function getSpeed() {

        return self::$speed;

    }   

    //在这里定义一个静态方法,实现速度累加10

    public static function speedUp(){

        //这里能调用上面共有属性name么

        return self::$speed += 10;   

    }

}

比如这个案例,我在里面添加一个共有属性$name,我在静态方法中能调用这个共有属性么,如果可以,怎么调用?

正在回答

3 回答


public static function speedUp(){

    $car = new Car();

    echo $car->name;

    return self::$speed += 10;

}

这样不就调用了$name

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

Miracle_H

在静态方法中实例化对象才能调
2016-12-02 回复 有任何疑惑可以回复我~
#2

月下风物语 提问者

这个是实例化之后调的实例的name,不能这么算的吧- -!
2016-12-02 回复 有任何疑惑可以回复我~
#3

Miracle_H 回复 月下风物语 提问者

你说静态方法是干嘛的?不就是为了不能实例化对象才产生的,你不实例化请我你怎么调?
2016-12-02 回复 有任何疑惑可以回复我~
#4

Miracle_H 回复 月下风物语 提问者

你在静态方法中调用非静态变量就违背了静态这个概念是干嘛的
2016-12-02 回复 有任何疑惑可以回复我~
#5

月下风物语 提问者 回复 Miracle_H

静态方法不是不用实例化就可以直接调的么?
2016-12-02 回复 有任何疑惑可以回复我~
#6

月下风物语 提问者 回复 Miracle_H

只是问一下可不可以,如果从概念上如你所说违背了,那就是不允许咯
2016-12-02 回复 有任何疑惑可以回复我~
#7

Miracle_H 回复 月下风物语 提问者

对啊,那你在静态方法里调用非静态,岂不一定先要实例化?
2016-12-02 回复 有任何疑惑可以回复我~
#8

Miracle_H 回复 月下风物语 提问者

你问能不能调我给你展示了能调啊
2016-12-02 回复 有任何疑惑可以回复我~
#9

月下风物语 提问者 回复 Miracle_H

这节调的时候直接用的Car::speedUp(),与实例不实例化没关系。你确实调了,谢谢你的思路\* ——*/
2016-12-02 回复 有任何疑惑可以回复我~
查看6条回复

$this->name 

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

月下风物语 提问者

静态方法中不允许$this伪变量
2016-12-02 回复 有任何疑惑可以回复我~

肯定可以

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

月下风物语 提问者

怎么调,举个栗子
2016-12-02 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

静态方法中可以调用非静态属性么?

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号