创建子类对象是否也创建其超类的对象?

问题描述:

继承人我的意思的例子:创建子类对象是否也创建其超类的对象?

public class Rectangle 
{ 
    private int length; 
    private int breadth; 
    . 
    . 
} 

public class Box extends Rectangle 
{ 
    private int height; 
    . 
    . 
} 

当你:

Box b = new Box(); 

是否创建一个盒子和一个矩形对象,用矩形不能直接访问,但只能通过访问Box对象。换句话说,它是否在内存中创建两个对象?

换句话说,它是否在内存中创建两个对象?

不,它会创建一个对象。该单个对象表示Box(并且由于这是Rectangle的子类型,所以该同一对象也表示Rectangle)。

继承只是确保Box对象的接口是Rectangle接口的扩展。

+0

好吧,但我不明白的是,我被告知Box不会继承Rectangle的私有实例变量,但它可以通过公共方法访问它们。在那种情况下,内存中的某处不会有Rectangle对象? //困惑 – 2011-04-12 12:13:37

+2

@Zac Blaric:你被告知错了 - Box *会*继承这些,它不能直接访问它们。 – Erik 2011-04-12 12:14:54

+0

@Zack Blazic,好吧,这是一个措辞问题。你也可以说它继承了它们,但它不能访问它们。 – aioobe 2011-04-12 12:15:58