2

2 つのクラスのインスタンスを取りましょう

public abstract class Shapes
{
      public abstract void draw(Graphics g);

}

public class Rectangle extends Shapes
{
     public void draw(Graphics g)
     {
          //implementation of the method 
     }
}

ここで、クラスは classRectangleを拡張Shapesし、暗黙的にclass を拡張しObjectます。他の拡張ができないことはわかっていますが、継承されたクラスShapesObject多重継承を呼び出すことはできませんか? (2つのクラスを継承することは、1つの観点からは多重継承であるため)

4

5 に答える 5

10

多重継承ではありません。あなたは and から継承しているのではなく、Shapeswhich isから継承しています。ObjectShapesObject

多重継承は、一度に 2 つのクラスから継承する場合のみです。

public class Rectangle extends Shapes, Figures

Javaでは許可されていません。

あなたが言及しているのはMultilevel Inheritanceです。ありがとう @BhavikShah

于 2012-12-18T04:59:35.010 に答える
2

あなたが説明するのは、単一継承の定義です。クラスは、そのスーパークラスの属性とメソッド、およびスーパークラスのすべてのスーパークラスを継承します。ルート ( ) に戻るパスは 1 つだけObjectです。多重継承では、ルート (または複数のルート) に戻るパスが複数存在します。

于 2012-12-18T04:59:50.510 に答える
1

これは、とRectangleの両方から派生したものではありません。しかしは から派生し、 シェイプは から派生します。したがって、はと同様です。ShapesObjectRectangleShapesObjectRectangleShapeObject

 Object
   |
   V
 Shapes
   |
   V
Rectangle

したがって、Java には多重継承はありません。

于 2012-12-18T05:06:04.267 に答える
0

多重継承はJavaでは不可能

public class A extends B, C {

}
于 2012-12-18T05:00:45.610 に答える
0

Java で直接多重継承することはできません。

ただし、インターフェイスを使用してこれを (ある程度) 実現できます。

例えば

interface A{

 void m1();

}
interface B{

  void m2();

}

class C implements A,B{

 // it has both m1 and m2;

}
于 2012-12-18T05:14:51.300 に答える