【发布时间】:2019-12-08 14:22:55
【问题描述】:
假设 A 是 B 和 C 的超类。 B 是 D 和 E 的超类, C 是 F 和 G 的超类。 (G和F扩展C,E和D扩展B,C和B扩展A)
我有一个 A 类型的数组,我希望它随机选择(比如说 50/50 的机会) 在 B 或 C 类和 B 或 C 类之间随机指向 D 或 E 类和 F 或 G 类的对象。 所以最终我可以对 A 类型的数组执行函数(A 将指向 D、E、F 或 G)
我可以通过在 B 或 C 的承包商内部(随机)创建一个对象来做到这一点吗?
【问题讨论】:
-
我可以通过在 B 或 C 的承包商内部(随机)创建一个对象来做到这一点吗?:这是什么意思?什么是承包商?还有……你为什么不试着去做,而不是问你的想法是否正确?
-
Mistyped Constructer** 我确实尝试过,但我的执行是错误的,所以我寻求建议......如果这可能的话。
-
然后发布您尝试过的内容。解释你希望你的代码做什么以及它做什么。 B 的构造函数创建 B。您不能将代码放入 B 的构造函数中以使其构造其他内容。
-
只是强调一下:构造函数不创建实例;
new语句创建实例,然后执行构造函数来初始化它 - 所以new B(...)将始终导致B的实例(或异常)似乎您需要工厂模式或类似模式(例如A.createRandomInstance()) 或与代表一起工作(A有一个内部实例可以完成这项工作)
标签: java inheritance polymorphism