【发布时间】:2022-01-14 12:27:57
【问题描述】:
我有一个这样的类结构:
LineTemplate (abstract)
/ \
LineOut (abstract) LineIn (final)
/ \
LineOutTransfers (final) LineOutSells (final)
LineOut 和 LineIn 都应该从文件中读取一行,根据数据库检查其内容并运行多个查询。
然而,LineOut 包含两个略有不同的变体,这取决于行的内容。由于 LineOutTransfers 和 LineOutSells 在调用它们的方法时执行不同的操作,我决定继承它们并将它们视为子类。
我在LineTemplate中创建了一个public static LineTemplate __init()方法来判断它是LineOut还是LineIn em> 类并根据外部条件返回正确的类型,我想实现一个类似的方法来确定 LineOut 子类的正确类型。
由于 LineOut 子项依赖于行内容,但是,我被困在这一点上。该类应读取该行,然后将其自身转换为正确的孩子,然后执行检查。但这是不可能的,因为我不能将父类转换为子类,如果它还不是那种类型(多态)。
我还考虑过读取 LineOut 的 __init() 方法中的所有行,然后将变量作为参数传递给它的子构造函数,但是因为有一堆要读取的变量,因为它在 LineIn 中的处理方式不同,所以在我看来这是一种不好的做法。
有什么想法吗?提前致谢。
【问题讨论】:
-
在我看来,继承在这里不是正确的设计,但它的描述过于模糊,无法做出明智的判断。
-
@daniu 我确实想过一个简单的布尔标志,但是两个孩子的方法差异太大了......你建议什么?
标签: java inheritance parent-child multiple-inheritance