JAVA中多态时子类和父类的成员变量重名,用父类的引用变量去引用子类的对象时的小问题

classFu{inta=5;publicvoidm1(){System.out.println("父类的方法");}}classZiextendsFather{inta... class Fu
{
int a = 5;
public void m1()
{
System.out.println("父类的方法");
}
}
class Zi extends Father
{
int a = 10;
public void m1()
{
System.out.println("子类的方法");
}
}
public class MyTest {

public static void main(String as[])
{
Fu f = new Zi();
System.out.println("a=" + f.a);
}
打印输出是 5,我现在知道成员变量编译和运行时都是看等号左边。
我想知道具体的过程是怎么样的,最好有内存详解。
求大神解答。
展开
 我来答
zxp3126248
推荐于2018-04-06 · 超过10用户采纳过TA的回答
知道答主
回答量:36
采纳率:100%
帮助的人:21.6万
展开全部
其实是有两个a变量,有a=10和a=5,他是两块内存,但是f本身是Fu对象,他是无法访问到a=10的内存地址。你要是知道c里面的指针,你就知道其实就是指针的指向问题了。
倪剑平999
2014-11-11 · 超过36用户采纳过TA的回答
知道答主
回答量:112
采纳率:100%
帮助的人:42.9万
展开全部
本事就存在矛盾

相当于 子类有 2个 int a = 10
int a = 5

应该是 根本 没有 重新赋值

子类的 构造方法 中 没有重新赋值 就用不到 子类的 a = 10了
追问
肯定是赋值了。
如果子类有这段代码:
public void method()
{
System.out.println(this.a+"....."+super.a);
}
主函数调用后,会输出10.....5
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式