一道关于继承的面试题,有意思Java codepublic class Test {public static void main(String[] args) {Dog
一道关于继承的面试题,有意思
- 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"; }}
[解决办法]
私有方法不被继承
[解决办法]
[解决办法]
给我30分
