スーパークラスのアニマリアを作成しているとしましょう。膨大な量のサブクラスが存在する可能性があります。たとえば、ホモサピエン、チンパンジー脊索動物門、哺乳類昆虫などです。これで、スーパークラスのサブクラスレベル(門、家族、属、種など)を指定できると非常に便利です。 。これにより、self.Family.Type
またはのようなものを使用できるようになりますself.Species.Type
。したがって、self.Genus.Typeの人間はHomoになり、self.Family.TypeはHominadaeになります。これは、私が自分のコードで頻繁に望んでいることです。自己型を使用したいのですが、意図した継承階層内のレベルを指定する方法がないため、使用できません。
これにより、クラスを種レベルより上でインスタンス化できないことや、特定のメンバーを特定のレベルで最終化する必要があることを指定するなど、他のこともできる可能性があります。したがって、val boolで分化した組織がある可能性があり、門レベルで確定する必要があります。また、種が動物界から直接継承することはできず、属から継承することもできます。属は、家族などから継承する必要があります。
簡単に理解できる複雑な階層であるため、例としてアニマリアを使用しました。だから私は生物学には興味がありませんが、コメントに応えて、Animaliaは以下を持っているかもしれません:
class Animalia {
Type fundamentalCellType = Eucharyotic // All sub species inherit from this.
val HasDifferentiatedTissues: Boolean
}
現在、Scalaでこれを行う方法はありますか?そうでない場合は、Scala内、他の言語、または一般的にOO理論でこれについて説明している論文などがありますか?私は何も見つけることができませんでしたが、私はそのような機能を望んでいた最初の人になることはできないと確信しています。