- 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分