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";
}
}上边的Dog d = (Dog) mini;其中的d到底是父类的对象还是子类的?
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";
}
}上边的Dog d = (Dog) mini;其中的d到底是父类的对象还是子类的?
您可以把d.getClass()打出来看看。
(Dog)多余的
d是一个父类引用,引用了子类的对象
所以d.call()调用的是子类的方法,d不是谁的对象,是引用了哪个对象