给定三个类A,B和C,其中B是A的子类,C是B的子类。
(a) (o instanceof B) && (!(o instanceof A))
(b) (o instanceof B) && (!(o instanceof C))
(c) !((o instanceof A) || (o instanceof B))
(d) (o instanceof B)
(e) (o instanceof B) && !((o instanceof A) || (o instanceof C))
问题:只有当reference o
表示的对象实际已从B类实例化时,哪个选项才有效?
注意:我无法理解这个问题。即使该对象是从B实例化的,我们也可以从A,B或C类中实例化对象。
究竟试图陈述的问题是什么?
答案 0 :(得分:0)
由于这显然是一项家庭作业,我不宜直接提供答案。相反,我已经为您编写了一个程序来演示问题的含义,运行它会提供答案。
你可以自己尝试一下:
public class Main {
class A {}
class B extends A {}
class C extends B {}
public static void main(String[] args) {
new Main().experiment();
}
private void experiment() {
Object o = new B();
boolean a = (o instanceof B) && (!(o instanceof A));
boolean b = (o instanceof B) && (!(o instanceof C));
boolean c = !((o instanceof A) || (o instanceof B));
boolean d = (o instanceof B);
boolean e = (o instanceof B) && !((o instanceof A) || (o instanceof C));
System.out.println("a = "+a);
System.out.println("b = "+b);
System.out.println("c = "+c);
System.out.println("d = "+d);
System.out.println("e = "+e);
}
}
答案 1 :(得分:0)
如果您不了解instanceof,请阅读this。
提供的示例非常清楚地解释了您的要求。
从问题中,你知道A,B,C之间的关系
由于o
的实际课程是B,你应该能够用给定的信息回答这些问题。