Как работает оператор instanceof в контексте downcasting в Java? - PullRequest
0 голосов
/ 30 декабря 2018

Я пытаюсь понять цель использования оператора 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?

...