class Animal {
    String name="Animal";
    int leg=0;
    boolean mood=true;
    public Animal() { }
    public Animal(String animal)
    {
        this.name=animal;
    }
}class frog extends Animal
{
    frog(){}
    frog(String temp)
    {
        super(temp);
        System.out.println("From Frog :"+this.name);
        System.out.println("From Animal:"+super.name);
    }
    public static void main(String[] args) {
        frog f=new frog("frog");
    }
}为何运行出来的结果 this.name 和 super.name  都是frog呢 super.name应该是用父类的"Animal"这个结果才对啊  请高手帮帮小弟

解决方案 »

  1.   

    frog类并没有明确定义一个name属性啊!!!
    所以this.name被重定向为super.name如果你在frog类里面也定义一个name属性,那么结果就不同了
      

  2.   

    是啊  可是frog类继承了父类的name属性啊  它的里面应该也具有这个属性啊
      

  3.   

    继承的含义是共享!!!!!!
    换句话说,如果name属性是通过继承得到的(而不是单独定义)
    那么this.name和super.name就完全是一回事,是同一个变量的两个不同的名字。
    这回懂了吧