黑马程序员技术交流社区
标题:
关于继承中子类中出现非私有的同名成员变量时的问题
[打印本页]
作者:
闪亮未来
时间:
2013-11-2 17:55
标题:
关于继承中子类中出现非私有的同名成员变量时的问题
class Fu
{
int num=3;
}
class Zi extends Fu
{
//int num=5;
void show()
{
System.out.println(num);
}
}
class ExtendsDemo2
{
public static void main(String[] args)
{
Zi z=new Zi();
z.show();
}
}
复制代码
子类中最后打印的那个num默认省略了this. 如果z.show执行后,如果子类中的 int num=5没有被注释,输出的是该类中的5 ,当5被注释后,不管 是 this.num 还是 super.num 或者默认 num,都执行的是父类的num=3.
我的观点就是先看自己有没有,没有就去父类找。这种理解合不合理?
作者:
零下五度的水
时间:
2013-11-2 18:17
可以参考方法的Override,子类加上int num=5; 相当于把父类的num属性重写了
作者:
寻丶丶觅
时间:
2013-11-2 19:09
class Zi extends Fu
{
int num=5;
void show()
{
int num =4
System.out.println(num);
}
}
我的感受就是虚拟机的默认添加机制,像我上面这个方法有num,默认是无this或super引用,当方法中没有,默认添加this,子类没有,默认添加super。都没有,编译报错。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2