JavaSE 基础 第33节 实现继承

2016-06-29

实现继承
super();
在调用子类构造器时,如果没有显式写出super,那么编译器会默认加上super()无参构造器。
如果想调用父类有参构造器,那么必须显式调用,编译器不会默认加上的。
创建子类对象的过程,就是从底层基类开始往上,一层层地调用构造方法。
super() super(参数)都必须放在方法的第一个语句中。

package com.java1995;

public class A {
    
    A(){
        System.out.println("调用A的无参构造方法");
    }
    
    A(int i){
        System.out.println("调用A的有参构造方法");
    }

}

class B extends A{
    B(){
        System.out.println("调用B的无参构造方法");
    }
    
    B(int i){
        /**
         * super()、super(参数)都必须放在方法的第1个语句中
         * 显式调用、父类有参构造器
         */
        super(i);
        System.out.println("调用B的有参构造方法");
    }
}

class C extends B{
    C(){
        /**
         * super();
         * 在调用子类的构造器时,
         * 如果没有显式写出super(),
         * 编译器默认调用父类的无参构造器;
         * 如果想调用父类的有参构造器,必须显式调用。
         */
        super();
        System.out.println("调用C的无参构造方法");
    }
    
    C(int i){
        /**
         * 显式调用、父类有参构造器
         */
        super(i);
        System.out.println("调用C的有参构造方法");
    }
}
package com.java1995;

public class Test {
    
    public static void main(String[] args) {
        //C-->B-->A
        //C c=new C();
        C c=new C(1);
        
    }

}

【参考资料】

[1] Java轻松入门经典教程【完整版】

posted @ 2016-06-29 17:01  岑亮  阅读(190)  评论(0编辑  收藏  举报