検索

ホームページ  >  に質問  >  本文

java里的类:为什么只能继承一个类,而可以实现多个接口?

1、java官方教程里有一段话,解释了原因:
One reason why the Java programming language does not permit you to extend more than one class is to avoid the issues of multiple inheritance of state, which is the ability to inherit fields from multiple classes. For example, suppose that you are able to define a new class that extends multiple classes. When you create an object by instantiating that class, that object will inherit fields from all of the class's superclasses. What if methods or constructors from different superclasses instantiate the same field? Which method or constructor will take precedence? Because interfaces do not contain fields, you do not have to worry about problems that result from multiple inheritance of state.

http://docs.oracle.com/javase/tutorial/java/IandI/multipleinheritance.html

2、问题是这段话我没看懂啊,我操。
真的认认真真看了,而且这个教程一节一节看下来,没看懂的地方实在不多啊——可是这么关键性的这一段,居然看不懂啊我操。

3、大伙都抡起袖子来解释一番呗~

PHPzPHPz2887日前627

全員に返信(4)返信します

  • 伊谢尔伦

    伊谢尔伦2017-04-17 17:32:02

    public クラス A には public int i=0, some() {i=1;}
    public クラス B には public int i=0, some() {i=2;}
    public クラス C public int i=0 があり、A,B を拡張します
    C は c をインスタンス化し、c.some()、i=?
    呼び出し時に複数の親クラスを継承することを避けるため、複数のクラスの継承は許可されません。同じ メソッドやコンストラクタ内で同じメンバ変数を代入するとめちゃくちゃになる…

    返事
    0
  • 高洛峰

    高洛峰2017-04-17 17:32:02

    私の理解について教えてください。間違っていたらご指摘ください。
    多重拡張が許可されていない理由は、多重継承を避けるためです。多重継承を許可すると、複数の継承先の変数を取得できます。複数のクラスを継承するクラスを定義する場合、作成メソッドを通じてインスタンスを取得すると、このインスタンスは拡張するすべての変数/メソッド、つまり、複数の親クラスが同じ変数を持つ場合はすべての親クラスを取得します。混乱を引き起こす。インターフェースに変数がない場合、上記の矛盾はありません。

    返事
    0
  • 迷茫

    迷茫2017-04-17 17:32:02

    上記に加えて、単一継承では、多重継承によって引き起こされるダイアモンド問題も回避できます。

    返事
    0
  • 天蓬老师

    天蓬老师2017-04-17 17:32:02

    継承には、オブジェクトが持つべき性質(プロパティ)と動作(メソッド)が反映されるべきだと思います。
    オブジェクト指向プログラミングの観点から考えてみましょう:
    親クラスは、子クラスのすべての共通の特性と動作を収集します。
    サブクラスには、親クラスの「パブリック」機能と動作がすべて含まれています。
    これはクラス間の階層構造を反映しており、システムの記述からコードを使用したシステムの記述への移行の問題も解決します。
    上記は単に私の理解のためのものです。 誤解を招く内容がある場合は、アドバイスを受け入れてください。
    リファレンス: Java プログラミング 第 4 版

    返事
    0
  • キャンセル返事