Java多态行为

标签 java class polymorphism

如果我有一个基类调用 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/

相关文章:

c++ - 更改方法的保护级别是否被认为是好的做法?

java - Thymeleaf 呈现空白页面

java - 如何解码表情符号字符的格式不正确的十六进制字符串,例如 "` 1f1e81f1f 3`"?

java - 用于格式化的实用程序类

c++ - 有没有办法禁用非动态类构造函数?

python - 类型错误 : No to_python (by-value) converter found for C++ type

嵌套类中的 Java 抽象继承

java - 字符串构造函数_网络

function - opengl中变量名后面的星号(*)是什么意思?

c++ - 当中间类跳过实现时,在继承层次结构中执行哪个虚方法?