2011-07-15 35 views
2

我有两个类,一个是硬件依赖的,一个不是(我们分别称它们为HardwareDependent和HardwareIndependent)。硬件相关类扩展了与硬件无关的类。现在我有另一个类,至少必须是HardwareIndependent的扩展,但是我希望它是HardwareDependent的扩展,因此它可以利用附加功能。有没有使用反射或其他方法来实现这一点的可能性?或者这是一个完全技术上的不可能性?我想如果一切都失败了,我可以两次写这个班,但在我看来这是一种无效的方法。感谢您提前提供任何帮助。在Java运行时确定基类在运行时

回答

2

继承在编译时是固定的。

这听起来像你不想让你的新班级扩展 HardwareIndependent或HardwareDependent;你想要它使用一个对象,可以是。你想要组合而不是继承。你是第三类(我们称之为HardwareComposite)有一个HardwareIndependent的参考。然后,可以使用instanceof运算符在运行时检查它是否为HardwareDependent,如果是,则将其转换为HardwareDependent并使用提供的附加工具。

如果您的设计迫使您将继承和构图的概念混合在一起,那么您可以查看Facade和Factory模式。