黑马程序员技术交流社区
标题:
分享一个关于多态中成员变量重写小问题
[打印本页]
作者:
辉Se天空
时间:
2015-3-28 20:41
标题:
分享一个关于多态中成员变量重写小问题
本帖最后由 辉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;
细节问题大神勿嘲笑,仅供和我一样的菜鸟参考学习
作者:
leonard
时间:
2015-3-28 21:22
谢谢提醒,概念更清晰了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2