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