创建子类对象是否也创建其超类的对象?
问题描述:
继承人我的意思的例子:创建子类对象是否也创建其超类的对象?
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
接口的扩展。
好吧,但我不明白的是,我被告知Box不会继承Rectangle的私有实例变量,但它可以通过公共方法访问它们。在那种情况下,内存中的某处不会有Rectangle对象? //困惑 – 2011-04-12 12:13:37
@Zac Blaric:你被告知错了 - Box *会*继承这些,它不能直接访问它们。 – Erik 2011-04-12 12:14:54
@Zack Blazic,好吧,这是一个措辞问题。你也可以说它继承了它们,但它不能访问它们。 – aioobe 2011-04-12 12:15:58