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

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

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

正在回答

4 回答

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

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

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

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

一切都是为了偷懒。

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

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

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

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

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

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

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

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

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

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

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

举报

0/150
提交
取消

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

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

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

帮助反馈 APP下载

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

公众号

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