我有超类 A,它由子类 B1 和 B2 扩展。然后,我有五个子类(C1、C2、C3、C4、C5)扩展了 B1 或 B2。
我正在尝试制作一个包含这五个子类中的每一个的数组。
这些对象都被实例化为类型 A 的实例。
ClassA[] objects = new ClassA[5];
我尝试将每个对象重新分配给其中一个子类:
objects[0] = new ClassC1;
objects[1] = new ClassC2; // etc...
此时,A 类中存在的任何方法都可以正常工作,但找不到 B1/B2 或其他子类中定义的方法:
objects[0].MethodFromC1(); // returns a "symbol not found" error
instanceof 关键字表示 objects[0] 是类 A、B1/B2 和 C1 的实例。
我可以做些什么来维护我的类对象数组(循环并执行操作),同时让我的代码识别子类的方法?