【发布时间】:2014-05-04 02:06:45
【问题描述】:
我很困惑一个对象是instanceof 两个不同的类。例如:
EnglishTest x = new EnglishQuiz();
if (x instanceof EnglishTest){
System.out.print("P");
}
if (x instanceof EnglishQuiz){
System.out.print("P");
}
在这两种情况下,我都会打印出“P”。我的问题是为什么?
我知道x 的类型是EnglishTest,但既然我在做new EnglishQuiz,这不应该意味着我正在创建EnglishQuiz 的实例而不是EnglishTest 吗?这里发生了什么?
【问题讨论】:
-
EnglishQuiz是EnglishTest的一种吗? -
是的
EnglishQuiz extends EnglishTest很抱歉没有添加。 -
这有点像生物学。人类是哺乳动物,长颈鹿也是。每个 Human 都是 Human 类的一个实例,同时也是 Mammal。每只长颈鹿都是长颈鹿的一个实例,也是哺乳动物的一个实例。但是长颈鹿不会是人类的一个实例,反之亦然。在这种情况下,哺乳动物是人类和长颈鹿的超类,它们具有一些共同的属性。
标签: java oop polymorphism instanceof