假设我正在创建一个超类 Animalia。它可能有大量的子类:例如智人、黑猩猩脊索动物、哺乳动物昆虫等。现在能够在超类中指定子类级别非常有用:门、科、属、物种等. 这将允许我们使用类似self.Family.Type
or的东西self.Species.Type
。因此,人类的 self.Genus.Type 将是 Homo,而 self.Family.Type 将是 Hominadae。这是我经常发现自己在自己的代码中想要的东西。我想使用 self 类型,但我不能,因为我无法在预期的继承层次结构中指定级别。
这可能还允许我们做其他事情,例如指定一个类不能在物种级别之上实例化,或者某些成员必须在某些级别成为最终的。所以我们可能有 val bool 分化的组织,必须在 Phylum 级别完成。我们还可以指定一个物种不能直接从 Animalia 继承,而是从一个 Genus 继承,该 Genus 必须从一个 Family 等继承。
我刚刚以 Animalia 为例,因为它是一个易于理解的复杂层次结构。所以我对生物学不感兴趣,但作为对评论的回应,动物界可能有:
class Animalia {
Type fundamentalCellType = Eucharyotic // All sub species inherit from this.
val HasDifferentiatedTissues: Boolean
}
目前有什么方法可以用 Scala 做这些吗?如果没有,是否有任何文章论文等在 Scala、其他语言或一般 OO 理论中讨论这个问题?我什么都没找到,但我敢肯定我不会是第一个想要这种功能的人。