017 インターフェイス(インターフェイスの拡張) 013 解答例

// インターフェース A
interface A {
    // Aのメソッド
}

// インターフェース B
interface B {
    // Bのメソッド
}

// インターフェース C
interface C {
    // Cのメソッド
}

// AとBを拡張した新しいインターフェイス AB
interface AB extends A, B {
    // ABのメソッド
}

// ABとCを拡張した新しいインターフェイス ABC
interface ABC extends AB, C {
    // ABCのメソッド
}

この例では、3つの基本的なインターフェース A, B, C を作成し、それぞれのインターフェースにはメソッドが含まれていることを仮定しています。次に、A と B を拡張した新しいインターフェイス AB を作成し、AB と C を拡張した新しいインターフェイス ABC を作成しています。各インターフェースには具体的なメソッドの実装がないため、必要に応じて適切なメソッドを追加してください。

多重継承

多重継承(Multiple Inheritance)」は、プログラミング言語において、1つのクラスが複数のクラスから継承することを指します。Javaはクラスに対して単一継承を採用しており、1つのクラスは他のクラスを直接的に1つだけ継承できます。これは、クラス間の矛盾や競合を避け、単純なクラスの階層構造を確立するための方針です。

多重継承が許容されるプログラミング言語(例: C++)では、クラスが複数のクラスを同時に継承できます。しかし、多重継承はいくつかの問題を引き起こす可能性があります:

ダイヤモンド問題(Diamond Problem):

同じメソッドが複数のクラスから継承され、最終的なサブクラスでどのメソッドを使用するかが不明瞭になる問題。

   A
  / \
 B   C
  \ /
   D

この階層構造において、B と C が共通のメソッドを持っており、D が A、B、C を同時に継承すると、どちらのメソッドが呼び出されるべきかが曖昧になります。


クラス間の結びつきが強くなる:

多重継承により、クラス間の結びつきが強くなり、保守性や拡張性が低下する可能性があります。
Javaではこれらの問題を避けるため、単一継承とインターフェイスの概念を導入しました。複数のインターフェイスを実装することで、クラスが異なる機能を利用でき、同時にクラスの階層構造をシンプルに保つことができます。

「017 インターフェイス」問題集リスト