面向对象(继承中构造方法的关系)
- A:案例演示
- 子类中所有的构造方法默认都会访问父类中空参数的构造方法(而且还是首先访问父类中的构造方法,再完成自己的构造方法)
- B:为什么呢?
-
因为子类会继承父类中的数据,可能还会使用父类的数据。
-
所以,子类初始化之前,一定要先完成父类数据的初始化。
-
其实:
- 每一个构造方法的第一条语句默认都是:super(); 访问Object类的构造方法,Object类为最顶层的父类。
-
class Demo5_Extends {
public static void main(String[] args) {
Son s = new Son();
}
}
class Father extends Object {
public Father() {
super();
System.out.println("Father 的构造方法");
}
}
class Son extends Father {
public Son() {
super(); //这是一条语句,如果不写,系统会默认加上,用来访问父类中的空参构造
System.out.println("Son 的构造方法");
}
}
- 输出结果为:
Father 的构造方法
Son 的构造方法 - 简而言之:
父类有自己的无参构造方法
子类也有自己的构造方法
子类继承父类时必须首先执行完父类的构造方法
即使没有super();
语句,系统也会默认添加,
其实父类的构造方法中也有默认的super语句,为object类的构造方法