本帖最后由 辉Se天空 于 2015-3-28 20:52 编辑
在回头看视频中遇到的一个小细节,采用毕老师的代码如下- class Fu
- {
- int num = 5;
- void method1()
- {
- System.out.println("fu method_1");
- }
- void method2()
- {
- System.out.println("fu method_2");
- }
- static void method4()
- {
- System.out.println("fu method_4");
- }
- }
- class Zi extends Fu
- {
- int num = 8;
- Zi()
- {
- num = 8;
- }
- void method1()
- {
- System.out.println("zi method_1");
- }
- void method3()
- {
- System.out.println("zi method_3");
- }
- static void method4()
- {
- System.out.println("zi method_4");
- }
- }
- class DuoTaiDemo4
- {
- public static void main(String[] args)
- {
- Fu f = new Zi();
- System.out.println(f.num);
- }
- }
复制代码
这个的结果是5,因为 在多态中,无论静态和动态成员变量的特点:
无论编译和运行,都参考左边(引用型变量所属的类)。
num = 8; 这一句仅仅是改变了Zi类中的nu,即这一句完整的写法为this.num=8;
如果我们去掉
int num = 8;
这一句Zi类中的成员变量重写结果会输出 8。
或者我们也可以修改num = 8; 这一句为super.num=8;
细节问题大神勿嘲笑,仅供和我一样的菜鸟参考学习
|