现在涉及到两个类:基类和派生类。想象派生类生成的结果对象可能会让人感到困惑。从外部看,新类与基类具有相同的接口,可能还有一些额外的方法和字段。但是继承并不只是复制基类的接口。当你创建派生类的对象时,它包含基类的子对象。这个子对象与你自己创建基类的对象是一样的。只是从外部看,基类的子对象被包装在派生类的对象中。
必须正确初始化基类子对象,而且只有一种方法可以保证这一点:通过调用基类构造函数在构造函数中执行初始化,该构造函数具有执行基类初始化所需的所有适当信息和特权。Java自动在派生类构造函数中插入对基类构造函数的调用。下面的例子展示
了三个层次的继承:
classArt {
Art() {
System.out.println("Art constructor");
}
}
class DrawingextendsArt {
Drawing() {
System.out.println("Drawing constructor");
}
}public class CartoonextendsDrawing {
public Cartoon() {
System.out.println("Cartoon constructor");
}
public static void main(String[] args) {
Cartoon x =newCartoon();
}
}
输出
Art constructor
Drawing constructor
Cartoon constructor