• ベストアンサー

Javaでは多重継承ができない、の意味が分からない

aozakana_dhaの回答

回答No.2

現状はNo.1の方の回答でいいかと思いますが、 Java 8ではインターフェースでもメソッドの実装ができます。 implementsに複数のインターフェースを記述して、 そのどちらにも同じ名前、引数のメソッドの中身が実装されていれば、 implementsしたクラスでどちらの実装を使うか選択する必要があります。 ただ、インターフェースではクラスの状態を保持管理することはできないので、 それも複数のクラスから継承されるC++と同じになった、ということではありません。 まあ、実際にどう動くのか把握していれば、多重継承云々の言い回しは、 あまり気にしなくてもいいのではないかと思います。

re97
質問者

お礼

回答ありがとうございました。 >Java 8ではインターフェースでもメソッドの実装ができます ・知りませんでした ・参考になりましたー

関連するQ&A

  • 多重継承

    VC++ を使い始めて、 新しいクラスを多重継承で作ろうとして クラスウイザードを動かしたのですが、  多重継承がうまくできません。 クラスウイザードで、多重継承のクラスの作り方 を教えていただければ幸いです。  よろしくお願いいたします。

  • Javaのインターフェイスの意味

    以前あった質問の回答やネット上での説明を見たのですが、よくわからなかったので質問します。 public interface CharSequence { int length(); } class MyClassWithCharSequenceIF implements CharSequence { public int length() { return 0; } } インターフェイスには、よく多重継承を可能にするメリットがあるという説明がありますが、 public interface CharSequence { int length(); } こんな短い処理を継承する意味があるのでしょうか?クラス内で実装するためにまた public int length() { return 0; } を書かなければならないのは時間・手間のメリットは何もないように思えます。というよりむしろ単なる二度手間ではないでしょうか? クラスの継承は長い記述などを一まとめにして呼び出せるメリットがありますが、インターフェイスの継承にはそれがありません。 いったい何の意味があるんでしょうか?

    • ベストアンサー
    • Java
  • 継承について

    みなさま、どうかお知恵を貸して下さい。 javaを勉強中で、本を読みながら試しに動かしています。 現在、実現したい動作が実現可能かどうかを調べているところです。 そのため、環境やバージョン等は決まっておりません。 むしろ、実現可能な環境やバージョンがあれば、教えてください。 実現したい機能ーーーーーーーーーーーー 親クラスAにメンバーとメソッドを定義します。 Aを継承する子クラスBを定義します。 プログラム中で、A、Bのインスタンスを生成します。 そして、A、Bを継承するCのインスタンスを生成したいのです。 Cのメンバーやメソッドは、Bと同様のものです。 この場合、BのクラスからCのようなインスタンスを作成することは、可能なのでしょうか? ・・・Cを定義していないので、おそらく不可能かと思います。 やはりこういった場合、Aを継承しているBを継承するCクラスを定義しておく必要があると考えています。 では、Cを継承するD,Dを継承するE・・・というように、いくつ必要になるかわからない場合、最大数分継承したクラスを用意すべきでしょうか。 なぜ、そうしたいかというと、組織図のようなものを作成したいのですが、組織図を構成する人数は、ユーザーの任意としたいのです。 継承したクラスを用いれば、そのまま組織図の体系を表現できる気がしました。 質問が大雑把になってしまい、申し訳ないのですが、お力を貸していただければ幸いです。

    • ベストアンサー
    • Java
  • インタフェース、クラスの継承、コンストラクタ意味

    Javaを学習している初心者です。 インタフェース、コンストラクタ、クラスの継承について、 必要な理由が、イマイチよく分かりません。 特に設定しなくても、プログラムは動くと思うのですが・・・ (特にインタフェース) 詳しい方、教えて下さい。

    • ベストアンサー
    • Java
  • インターフェイスは何故必要か

     Javaの初心者です、宜しくお願いします。  Javaには継承という仕組みがあるのに何故インターフェイスという 仕組みが必要なのでしょうか。  勿論、2個の親クラスからの継承を嫌ったのはなんとなく理解出来るのですが それなら子クラスでインターフェイスの機能を別途作ってやれば、わざわざイン ターフェイスという仕組みを考える必要がないと思うのですが。  親クラス、子、孫、またその孫としてやり、そのどれかのクラスに インターフェイスの機能を持たせれば良いだけと考えるのですが。  インターフェイスのメッソドを全て実装する必要とかもなくなると思うのですが。  以上宜しくお願いします。

    • ベストアンサー
    • Java
  • java.util.ArrayListクラスの継承

    Java5年ぶりでちょっと新しい仕様について教えてください。。 java.util.ArrayListクラスを継承したクラスを作成しようと思っているのですが、継承後のクラスでも ArrayListChild<E> というような記述を有効にするには、一体どのような処理をすればよいのでしょうか。 そもそも、<E>とコンストラクタの後などに付けるこの仕様、なんて名前の仕様なんでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Java
  • RubyでJavaのInterfaceに相当するものはありますか?

    RubyでJavaのInterfaceに相当するものはありますか? Ruby 上で Javaの interface のようなものものを実現するには、どうしたらよ いのでしょうか? Rubyは型を宣言しないので機能的には interface は不要ですが。 クラスを実装する人に、あるクラスに実装しなければいけないメソッドを伝える (強制する)目的としての interface 的な使い方をしたいのです。 宜しくお願いいたします。

  • 抽象クラスを継承してクラスを作成の作り方が分かりません

    -------------------------------------- Employee -------------------------------------- -name : String #coin:double -------------------------------------- +getName():String +setName(String name):void +getcoin():double +setcoin(double Salary):void -------------------------------------- 抽象クラスを継承してクラスを作成 car1.java car2.java Employee.javaはIEmployeeを継承 IEmployee.javaは、メソッド"String getRoleName()を定義するインターフェース IEmployee.javaも作成 Sample.javaを実行し次の結果を得られるように作成 どなたか分かる方がいましたら教えて下さい。宜しくお願いします。

  • 継承・実装の関係で悩んでいます。

    継承・実装の関係について悩んでいます。 ここでは、アクセス制御を考えずに、インスタンスかstaticかabstract(ここではabstract final staticやabstract classのこと)の違いで、どう継承するのか考えています。 // 継承 はメソッドのオーバーライドのことを考えます。(オーバーロードは考えない) クラスAからクラスBでオーバーライドしたメソッドは、 クラスCでさらにオーバーライドできるのでしょうか? クラスCが クラスBのクラスAからオーバーライドしたメソッド をクラスBのメソッドとして見たときに、オーバーライドすることは可能なのでしょうか? クラスA │ インスタンスフィールドA │ staticフィールドA │ │ クラスA() { } │ │ インスタンスメソッドA () { } │ staticメソッドB() { } ↓ クラスB extends クラスA │ インスタンスフィールドA // 継承 │ インスタンスフィールドB │ staticフィールドB │ │ サブクラス1() { } // コンストラクタは継承しない、super()で呼び出す │ │ インスタンスメソッドA () { } // 継承 │ │ インスタンスメソッドB () { } │ staticメソッドB () { } ↓ クラスC extends クラスB implements インタフェースD, ... ↑ インスタンスフィールドA // クラスBのフィールドを継承 │ インスタンスフィールドB // クラスBのフィールドを継承 │ インスタンスフィールドC │ staticフィールドC │ │ サブクラス2() { } │ │ インスタンスメソッドA () { } // クラスBのメソッドを継承 │ インスタンスメソッドB () { } // クラスBのメソッドを継承 │ インスタンスメソッドD () { } // インタフェースDのメソッドを実装 │ インスタンスメソッドE () { } // インタフェースDのメソッドを実装 │ │ │ インスタンスメソッドC () { } │ staticメソッドC() { } │ interface インタフェースD extends インタフェースE ↑ │ staticフィールドD // public static final │ │ インスタンスメソッドD() { } // public abstract │ インスタンスメソッドE() { } // 継承 │ interface インタフェースE staticフィールドE // public static final インスタンスメソッドE() { } // public abstract

    • ベストアンサー
    • Java
  • 継承とは?

    お世話になります。 現在独学でJavaを学んでいるのですが、 『継承』のところでつまずいてしまいました。 参考書を元に継承の章を読んでいたのですが、 まず頭に浮かんだのは、 「継承をする意味は?」ということです。 継承をすることとしないことで何が違うのか。 また、必ず継承を行わなければならないような場面というのはあるのでしょうか? 特にSwingアプリケーションを作成していくと、 継承しないコードと継承したコードで記述ががらっと変わる気がしますが、 動作的に同じであればどっちでも良いのではないのか?というのが、 私の意見です。 この部分についてわかり安く説明している書籍やHPなどがありましたら 教えていただければ幸いです。

    • ベストアンサー
    • Java