フィールドをひとつ持ちます。フィールドをひとつ持ちます。SuperAクラスとSuperBクラスから継承した、サブクラス。SuperBまず、HasOneMethodSuper3クラスを用意します。メソッド1つ持ちます。自クラスの名前を出力するメソッドです。メソッド1つ持ちます。自クラスの名前を出力するメソッドです。);}}MultipleInheritSubクラスは、SuperAクラスとSuperBクラスをスーパークラスに持つサブクラスです。こんなクラスを作ろうとするとコンパイルエラーになってしまいます。SuperAクラスとSuperBクラスから継承した、サブクラス。SuperAクラスとSuperBクラスから継承した、サブクラス。SuperBもし作ることができたら、MultipleInheritSubクラスはSuperAクラスとSuperBクラスを組み合わせたクラスになります。MultipleInheritSubクラスのインスタンスを作ると、SuperAクラスとSuperBクラスのインスタンスが中に作られることになります。MultipleInheritSubクラスのインスタンス(想像)でも作ることができません。できないようになっているのでしょう。それは、クラスの構造が複雑になるからです。この例だと、SuperAクラスにdataフィールドが、さらにとSuperBクラスにもdataフィールドがあります、つまり両方にdataフィールドがあります。そのため、サブクラスでdataフィールドを使う場合に「どのスーパークラスのdataフィールドか」ということを指定する必要があります。しないと、どっちのdataフィールドを使えばいいのかわからないからです。多重継承を許すと、クラスの構造が複雑になります。対して、多重継承できない場合(これを「単一継承」と言います)には、スーパークラスからサブクラスへ枝葉のように伸びていくシンプルな構造になります。多重継承と単一継承のクラス構造(上がスーパークラス、下がサブクラスになります)多重継承の例の、クラスEのインスタンスを作ったら、どんなインスタンスが作られるのか想像もできません。各クラスを使う場合には「このクラスのインスタンスの、このフィールド・メソッドを使う」と指定しなければいけなくなり、それはとても複雑なことになります。対して、単一継承なら複雑なことにはなりません。単一継承の例のクラスDは、インスタンスを作ればクラスCとクラスAのインスタンスを持ちます。スーパークラスの方向に内包するだけなのでシンプルです。このように、単一継承の方が分かりやすいので、多重継承はできないようになっているわけです。オブジェクト指向とJavaこのページは、Java言語を用いたオブジェクト指向プログラミングのチュートリアル解説を行う「Javaのオブジェクト指向入門」の一ページです。詳しい説明は「Javaのオブジェクト指向入門」目次をご覧ください。