我有两类,一类是与硬件相关的,另一类是与硬件无关的(我们分别称它们为HardwareDependent和HardwareIndependent)。硬件相关类扩展了硬件独立类。现在,我有另一个类,至少必须是HardwareIndependent的扩展,但是我希望在可能的情况下,它是HardwareDependent的扩展,以便可以利用附加功能。是否有可能使用反射或其他方法来完成此操作?还是这完全是技术上的不可能?我想如果所有其他方法都失败了,我可以写两次该类,但是在我看来这是一种无效的方法。感谢您的任何帮助。
最佳答案
继承在编译时是固定的。
听起来您好像不想让新类扩展HardwareIndependent或HardwareDependent。您希望它使用可以是任何一个的对象。您需要组合而不是继承。您是第三类(我们将其称为HardwareComposite),具有对HardwareIndependent的引用。然后,您可以使用instanceof运算符在运行时检查它是否为HardwareDependent,如果是,则将其强制转换为HardwareDependent并使用提供的附加功能。
如果您的设计迫使您混合使用继承和构图的概念,则可以考虑外观和工厂模式。