import java.util.Date;
/**
*
* @author M.J
*
* 2009-10-12
*/
public class Test1 {
public static void main(String[] args) {
Dog dog = new Dog();
dog.call();
MiniDog mini = new MiniDog();
mini.call();
Dog d = (Dog) mini;
d.call();
}
}
class Dog {
private String getName(){
return "Dog";
}
public String bark(){
return "wang-wang";
}
public void call(){
System.out.println("I'm " + getName() + " " + bark());
}
}
class MiniDog extends Dog {
public String getName(){
return "Mini";
}
public String bark(){
return "WOO";
}
}
如上,输出结果是什么?正确结果是:
I'm Dog wang-wang
I'm Dog WOO
I'm Dog WOO
原因是子类没有重写call()方法。所以调用的是父类的call()方法。因为getName()是private的。不能被继承。所以没有被覆盖掉。父类只能调用自己的getName()方法。thank you!