目录
根据前两节的学习,可知父类中的构造方法既不能被继承,也不能被重写
,但是构造方法和其它方法一样可以被重载。
构造方法的的访问特点
- 父类中的构造方法不会被子类继承(但可调用)
- 子类中的所有构造方法默认先访问父类中的无参构造,再执行自己
public class Person {
// 属性
String name;
// 无参
public Person(){
System.out.println("看看父类的无参构造是否会被子类的无参调用");
}
// 有参
public Person(String name){
this.name=name;
}
}
public class Teacher extends Person {
// 无参
public Teacher(){
// 无任何操作
}
public Teacher (String name){
super(name);
}
}
public class Test {
public static void main(String[] args) {
// 创建子类对象
Teacher t1=new Teacher();//看看父类的无参构造是否会被子类的无参调用
/*
由此可知 虽然子类中的 无参构造方法 没有调用父类的无参构造,
但是虚拟机会默认生成一个super(),来访问父类中的无参构造
因此控制台会打印出父类无参构造中的内容
*/
}
}
为什么?
- 子类在初始化的时候,有可能会使用到父类中的数据,如果父类没有完成初始化,子类将无法使用父类的数据
- 子类初始使化前,一定要调用父类的构造方法来完成父类数据空间的初始化。
如何调用父类的构造方法?
- 子类构造方法的第一行语句默认都是:super() ,不写也存在,且必须是第一行
- 如果想调用父类的有参构造,必须手写super进行调用。