属性加不加static有什么区别,不都是类的属性嘛儿

来源:2-4 类的自动加载

慕村3361286

2018-01-31 20:21

1-2的时候不加static的时候老师说定义的变量是类的属性啊。现在加上static怎么还是类的属性啊。那俩者还有什么区别啊??

写回答 关注

4回答

  • ALEX3403648
    2018-10-29 10:28:56

    你要明白整个流程你就明白他的区别。静态属性 静态方法是一开始就已经创建在内存中了,而普通的方法属性是实例化的时候动态分配内存空间的。

  • 阿川776
    2018-07-22 03:28:14

    不加static 我理解为'对象属性',只有实例化对象出来后,才能使用这些属性;加了static,就是'类属性',不需要实例化对象就可以直接使用了;

  • ThinkSummer
    2018-06-05 15:19:43

    一切都是为了偷懒。

    你定义了一个‘人类’:这个人类有2条腿(正常人),这是属性;会走路,会说话,这是方法、行为。

    定义了这个人类后,你将来要用的。用的时候,你把这个抽象的类变成了一个具体的实例(new对象),比如‘麻花疼’。有一天,你说麻花疼这臭不要脸的又骗了我很多钱,我要派人砍他几条腿去!砍几条?一个人有几条腿?这时你可以用$麻花疼->腿,麻花疼的腿的属性来得到这个值。很显然的,你安排小弟去给麻花疼卸3条腿是不对的,小弟会给你报错的。

    有一天你又说小李子的百度坑人上当、干尽坏事,也给他卸几条腿!卸几条?你new 人类(‘李彦宏’);$李彦宏->腿,之后你知道小李子有几条腿了。

    到这里你发现里面的问题了,要知道一个正常人有几条腿,没必要具体到张三李四王二麻子,转一圈再转回来。直接从没有实例化的‘人类’里取就行了。比如腿这个属性,因为是常识性的,所有人都一样的,所以定义类的时候直接定义就行了,前面加一个关键字static来表明它的与众不同。

    用的时候没有必要实例化,你懂了吧。

    怎样用?人类->腿,这样用?

    这是错误的,“->”符号是给具体的对象用的。

    没有具体的对象,直接从类中取值,要用“::”符号: 人类::腿。

  • 慕桂英9535870
    2018-02-02 15:38:52

    加上static是累的静态属性,不加则是普通属性,静态属性不需要实例化类就可以调用,普通属性必须实例化类后才能调用。

PHP-面向对象

从面相过程到面向对象,带你深入理解面向对象编程思想,体验编程的奥妙!

29021 学习 · 41 问题

查看课程

相似问题