java给类的属性赋值_Java开发网 - 为什么类中定义的属性直接赋值与在方法中赋值会有不同...

Posted by:JiafanZhou

Posted on:2008-09-25 16:37

> 为什么直接在main方法里取i,s的值,与在get方法里取值是不同的?

> 一个取自父类,一个取自子类

Correct, this special rules applies to non-static fields declared in the class.

i.e.

- Fields that have the same as as any super-classes/interfaces will be overridden in the current derived class, and being used in the methods of the derived class.

- Fields does not have the dynamic binding attributes, in other words, they are not polymorphic, any methods are polymorphic.

- As a general rule, fields have the same as as super classes/interfaces should be avoided as not to cause confusion.

- Your example clearly shows this feature.

> 类的属性是存储在栈里还是堆里?

depends if it is a primitive or a Java Object type.

- for a primitive type, it will be stored in the stack.

- for a Java Object type, it will be stored in the heap.

- there are some violation to this general rule, depending on how JRE is implemented by Sun, for example, String has some special Literal Pool that does not strictly follow this rule in order to enhance the performance.

Regards,

Jiafan

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值