如果我有一个基类调用 A,两个子类扩展 A 调用 B、C B 和 C 都有一些扩展变量..等等 可以做什么,以便当我要求用户输入 B 或 C 时,我可以使用单个数组列表来保存两者。这样当我需要打印出来时,就能找到它。我不必遍历 B 的数组列表和 C 的数组列表? 感谢您的帮助!
最佳答案
多态性允许您在任何需要父类(super class)型的地方使用子类型。每个子类型都是其父类(super class)型,因此您只需创建一个父类(super class)型列表,然后就可以传入所有内容。
List<A> myList = new ArrayList<A>();
myList.add(new B());
myList.add(new C());
同样的注意事项:除了 Java 中的数组之外,列表不是协变的,因此您不能放置 List<B>
其中 List<A>
是期待。这是一件好事,因为否则您可以输入 C
的实例在 B
的列表中,然后会抛出异常。
关于Java多态行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26079135/