public interface Equidae
馬や鳥などの動物クラス (生物学的な意味でのクラス) のインターフェイスを作成できますpublic interface Avialae
(私は生物学者ではないため、用語が間違っている可能性があります)。
その後、引き続き作成できます
public class Bird implements Avialae {
}
と
public class Horse implements Equidae {}
そしてまた
public class Pegasus implements Avialae, Equidae {}
コメントから追加:
重複コードを減らすために、実装したい動物の共通コードのほとんどを含む抽象クラスを作成できます。
public abstract class AbstractHorse implements Equidae {}
public class Horse extends AbstractHorse {}
public class Pegasus extends AbstractHorse implements Avialae {}
アップデート
もう1つ詳細を追加したいと思います。Brian が述べているように、これは OP が既に知っていたことです。
ただし、インターフェイスで「多重継承」の問題を回避することを提案し、すでに具体的な型 (Bird など) を表すインターフェイスを使用することはお勧めしませんが、より多くの動作を表すインターフェイスを使用することはお勧めしません (他の人はアヒルのタイピングも良いですが、私が言いたいのは、鳥の生物学的分類である鳥類です)。また、大文字の「I」で始まるインターフェイス名を使用することもお勧めしません。たとえばIBird
、インターフェイスが必要な理由がわかりません。それが問題の違いです。インターフェイスを使用して継承階層を構築し、必要に応じて抽象クラスを使用し、必要に応じて具象クラスを実装し、必要に応じて委任を使用します。