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,我现在知道成员变量编译和运行时都是看等号左边。
我想知道具体的过程是怎么样的,最好有内存详解。
求大神解答。 展开
{
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,我现在知道成员变量编译和运行时都是看等号左边。
我想知道具体的过程是怎么样的,最好有内存详解。
求大神解答。 展开
2个回答
展开全部
本事就存在矛盾
相当于 子类有 2个 int a = 10
int a = 5
应该是 根本 没有 重新赋值
子类的 构造方法 中 没有重新赋值 就用不到 子类的 a = 10了
相当于 子类有 2个 int a = 10
int a = 5
应该是 根本 没有 重新赋值
子类的 构造方法 中 没有重新赋值 就用不到 子类的 a = 10了
追问
肯定是赋值了。
如果子类有这段代码:
public void method()
{
System.out.println(this.a+"....."+super.a);
}
主函数调用后,会输出10.....5
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询