//Main.java
class c
{
    public int name = 12;
}
class d extends c
{
d()
{name =13;}
void d2()
{
System.out.println(super.name);
}
}public class Main
{
    public static void main(String[]args)
    {
        d d1 = new d();
        System.out.println(d1.name);
d1.d2();
    }
}//运行结果为:13,13//Main1.java
class c
{
    public int name = 12;
}
class d extends c
{
int name =13;
void d2()
{
System.out.println(super.name);
}
}public class Main
{
    public static void main(String[]args)
    {
        d d1 = new d();
        System.out.println(d1.name);
d1.d2();
    }
}//运行结果为:13,12问题是不能理解运行结果的差异,请前辈解释一下,谢谢啊

解决方案 »

  1.   

    首先你要了解super这个关键字的意思,是调用父类的意思,
    void d2()
    {
    System.out.println(super.name);
    }这句话就是调用父类的name,虽然子类里面有一个name,但是并不是覆盖了父类里面的name,而只是父类的name隐藏起来了,使得直接调用子类里面的name显示的是子类定义的name。
    第一个main。Java,不用说,子类没有定义name变量,并且父类里面的name变量不是private,子类可以直接继承name,这样子类和父类就共用一个name变量