给定以下内容:
class ClassA
class ClassA1 extends ClassA
class ClassA2 extends ClassA
class ClassA3 extends ClassA
ClassA1 a1 = new ClassA1()
ClassA2 a2 = new ClassA2()
ClassA3 a3 = new ClassA3()
ClassA a = either a1, a2, or a3 (programmed to be randomly chosen by JVM)
如果在运行时仅将对子类对象的引用(“ a1”,“ a2”或“ a3”)分配给超类引用变量“ a”,我该如何编写实现的“ if”语句:if' a'指a1,访问a1的指定字段(不是从a继承的)?任何帮助,将不胜感激。
最佳答案
使用instanceof
运算符和强制转换。
if (a instanceof ClassA1) {
((ClassA1) a).someMethodThatsOnlyInA1();
}