给定以下内容:

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();
}

10-08 18:39