我试图了解使用instanceof运算符作为正确下调对象的方法的目的。
public class Test {
public static void main(String [] args) {
Dog k = new Dog();
Animal v = new Dog();
if (v instanceof Dog){
k = (Dog)v;
k.getAnimalName(); // displays Parent Animal
k.getDogName(); // displays Dog
}
}
public class Dog extends Animal{
public void getDogName(){
System.out.println("Dog");
}
}
public class Animal{
public void getAnimalName(){
System.out.println("Parent Animal");
}
}
对于v是Dog类型的实例感到困惑。有人可以解释一下吗?
对于方法调用中显示的内容感到困惑(请参阅k.getAnimalName()和k.getDogName)。 k可以同时调用这两种方法的原因是因为k的类型是Animal的子类吗?