蔡香满屋
站在牛顿头上吃苹果

重点:

1.子类的构造的过程中必须调用其基类(父类)的构造方法(使用super())。也就是说想要构造出子类,必须要先构造出父类,即没有父亲何来的儿子。

2.子类可以在自己的构造方法中使用super(argument_list)调用基类的构造方法。

  使用this(argument_list)调用本类的另外的构造方法。

  如果调用super,必须写在子类构造方法的第一行。

3.如果子类的构造方法中没有显示地调用基类构造方法,而基类中又没有无参的构造方法,则编译出错。

验证第三点的例子:

// 定义一个父类

class SuperClass {

  private int id;

  SuperClass(int id){
    System.out.println("父类有参构造器");
  }

}

// 定义一个子类继承父类

class SubClass extends SuperClass {

  private int id;

  // 子类的构造方法

  SubClass(int id) {
// 这里子类的构造方法中没有显示地调用基类构造方法
    System.out.println("子类的有参构造器");
  }

}

// 内部类

public class TestSuperSub {

  public static void main(String[] args){

    SubClass sc1 = new SubClass(400);// 实例化过程,因为子类中没有显示地
调用父类构造函数,同时父类也没有提供无参构造函数,所以会编译失败。   } }
扩展:如果父类中加上:
SuperClass(){System.out.println("父类无参构造函数"}则可以构造出子类对象sc1

  

 

posted on 2018-12-20 23:53  蔡香满屋  阅读(207)  评论(0)    收藏  举报