2012-12-18 75 views
2

让我们采取两班Java不支持多继承吗?

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

} 

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

这里的类Rectangle已经扩展分类Shapes的实例,并暗示它扩展Object类。我知道没有其他扩展是可能的,但我们不能称为继承类ShapesObject多重继承? (因为从一个角度继承两个类是多继承)

+0

http://stackoverflow.com/questions/4452461/inheritance-in-java-and-superclassesobject-class – Habib

+2

多重继承是当单个类在一种情况下从两个或更多个类直接继承(不通过它是祖先)。这就好像试图做'public class Rectangle extends Shape,Point,Dimension' - Java显然不能这样做。 – MadProgrammer

+0

s /隐式/间接/:P“对象”继承来自“形状”,扩展了“对象”。 (除了'Object'外,每个类都只从一个基类继承,如果你没有指定基类,它默认为'Object'。)如果'Shapes'和'Object'有区别,'Rectangle'将始终看到“形状”版本。 – cHao

回答

10

它不是多重继承。您不是继承ShapesObject,您是继承Shapes这是一个Object

只有当您一次从2个类继承时,才会有多重继承。

public class Rectangle extends Shapes, Figures 

Java中不允许使用哪种方法。

你所指的是Multilevel Inheritance。谢谢@BhavikShah

+0

同意。我相信Rectacle扩展了Shapes和Shapes的事实扩展了Object,它被称为传递继承。 – gerrytan

+0

@gerrytan:我相信它被称为多级继承 –

2

你所描述的是单一继承的定义。一个类继承了它的超类的属性和方法,以及所有超类的超类。只有一条路径返回到根(Object)。在多重继承中,会有多条路径返回到根目录(甚至是多个根目录)。

0

多重继承装置,它是在Java

public class A extends B, C { 

} 
1

不可能这不是像Rectangle从两个ShapesObject而得。但是Rectangle源自Shapes并且形状源自于Object,因此RectangleShape以及Object

Object 
    | 
    V 
Shapes 
    | 
    V 
Rectangle 

因此,有没有在java中的多重继承

0

多重继承是不可能在Java中直接。

但是,您可以使用接口来实现此目的(在一定程度上)。

例如

interface A{ 

void m1(); 

} 
interface B{ 

    void m2(); 

} 

class C implements A,B{ 

// it has both m1 and m2; 

}