当前位置: 代码迷 >> J2SE >> 一路关于继承的面试题,有意思
  详细解决方案

一路关于继承的面试题,有意思

热度:235   发布时间:2016-04-24 18:03:22.0
一道关于继承的面试题,有意思
Java code
public class Test {    public static void main(String[] args) {        Dog dog = new Dog();        dog.call();        MiniDog mini = new MiniDog();        mini.call();                Dog d = (Dog) mini;        d.call();            }}public class Dog {    private String getName(){        return "Dog";    }        public String bark(){        return "wang-wang";    }        public void call(){        System.out.println("I'm " + getName() + " " + bark());    }}public class MiniDog extends Dog {    private String getName(){        return "Mini";    }        public String bark(){        return "WOO";    }}


如上,输出结果是什么?正确结果是:
I'm Dog wang-wang
I'm Dog WOO
I'm Dog WOO
第一条没什么争议,第二条谁能解释一下为什么,最好是能说明白在虚拟机内部的结构。thank you!

------解决方案--------------------
请看:重载,集成和多态;算符优先级;没事儿找事儿
------解决方案--------------------
Java code
public class MiniDog extends Dog {    @Override    private String getName(){        return "Mini";    }    @Override    public String bark(){        return "WOO";    }}
------解决方案--------------------
私有方法不被继承
------解决方案--------------------
探讨
Java codepublicclass MiniDogextends Dog {
@Overrideprivate String getName(){return"Mini";
}
@Overridepublic String bark(){return"WOO";
}
}
你试试  很可能MiniDog中的方法没有被重写

------解决方案--------------------
给我30分
  相关解决方案