我想了解instanceof如何工作。Java InstanceOf输出
考虑下面的代码:
class A { }
class B extends A { }
class C extends B { }
class D extends C { }
public class TestClass{
public static void main(String args[]){
B b = new C(); //1
A a = b; //2
if (a instanceof A) System.out.println("A"); //3
if (a instanceof B) System.out.println("B"); //4
if (a instanceof C) System.out.println("C"); //5
if (a instanceof D) System.out.println("D"); //6
}
}
纠正我,如果我错了这里,为了的instanceof返回true,则IS-A的条件必须得到满足。如果你看一下行// 1。在运行时,程序知道由参考“a”表示的对象是C类型的。因此,不应该只在第5行处输入?为什么A和B也在输出中?
D不显示是因为该对象不是D的实例,所以没有混淆。但我不明白为什么A和B显示在控制台中。
'a'是'A',因为'C extends B extends A'。 'a'是'B',因为'C扩展B'。 'a'是一个'C',因为它是。 'a'不是'D',因为'D扩展C'''''是'C'。 –
感谢您的帮助。 –
我在提出这个问题来补救反对票。 –