在Java中向下转换的上下文中,instanceof运算符如何工作?

时间:2018-12-30 03:55:08

标签: java casting downcast

我试图了解使用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");
    }
}
  1. 对于v是Dog类型的实例感到困惑。有人可以解释一下吗?

  2. 对于方法调用中显示的内容感到困惑(请参阅k.getAnimalName()和k.getDogName)。 k可以同时调用这两种方法的原因是因为k的类型是Animal的子类吗?

0 个答案:

没有答案