JiafanZhou
版主
发贴: 736
积分: 61
|
于 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
When I was a kid I used to pray every night for a new bike. Then I realized that The Lord doesn't work that way, so I stole one and asked him to forgive me.
|