检查instanceof时向上转换混乱

nr5*_*nr5 1 java upcasting

class Animal
{

}

    class Dog extends Animal
    {

    }

    class main
    {
      public static void main(String args[])
    Animal g= new Dog();
    System.out.println(g instanceof Dog);      // 1st case

    System.out.println(g instanceof Animal);   // 2nd case

}
Run Code Online (Sandbox Code Playgroud)

问题:为什么两种情况下输出都是 true ?

Arn*_*len 5

因为在运行时由局部变量引用的对象g是类型Dog(因此也是Animal, 因为Dog extends Animal,尽管您的示例中缺少该类型)。