java无参构造器,初始化基类

初始化基类

如果一个程序中涉及基类和导出类,那么存在多个类时,外部看来,那些类就像是和基类有相同接口的基类。

但是继承不单单是复制基类的接口。

创建一个导出类的对象时,该对象包含有积累的子对象。子对象是和用基类直接创建的对象时一样的。

对基类子对象的正确初始化极为重要:

·在构造器中调用基类的构造器来进行初始化,而基类构造器具有执行基类初始化的所有知识和能力。java会自动在导出类的构造器中插入对基类构造器的调用。



/**

 * @author Pandy

 * @date 2018/4/22 14:04

 */

public class Art {

    Art() {

        System.out.println("Art Constructed");

    }

}

    class Drawing extends Art{

        Drawing() {

            System.out.println("Drawing constructed");

        }

    }




/**

 * @author Pandy

 * @date 2018/4/22 14:06

 */

//构造是从基类向外扩散的,所以基类在导出类的构造器可以访问它之前就已经初始化。你即使不为Cartoon创建构造器,编译器也能为你合成一个默认

    //构造器,该构造器调用基类的构造器

public class Cartoon extends Drawing {

    public Cartoon(){

        System.out.println("Cartoon constructed");

    }


    public static void main(String[] args) {

        Cartoon x = new Cartoon();

    }}


output:

Art Constructed

Drawing constructed

Cartoon constructed


从上面这个实例可见,构建过程从基类向外扩散。基类在导出类的构造器能够访问它之前就已经完成了初始化。即使不为cartoon创建构造器,编译器也会为你合成一个构造器,该构造器会调用基类的构造器。

在第二段代码中,我们可以看到,只是给子类给了一个接口。

你可能感兴趣的:(java无参构造器,初始化基类)