父类空间优先于子类对象产生
在每次创建子类对象时,先初始化父类空间,再创建其子类对象本身。目的在于子类对象中包含了其对应的父类空间,便可以包含其父类的成员,如果父类成员非private修饰,则子类可以随意使用父类成员。代码体现在子类的构造方法调用时,一定先调用父类的构造方法。
- 构造方法的名字是与类名一致的。所以子类是无法继承父类构造方法的。
- 构造方法的作用是初始化成员变量的。所以子类的初始化过程中,必须先执行父类的初始化动作。子类的构造方法中默认有一个
super()
,表示调用父类的构造方法,父类成员变量初始化后,才可以给子类使用。
通过前面我们知道子类可以继承父类的属性和方法,除了那些private的外还有一样是子类继承不了的—构造器。对于构造器而言,它只能够被调用,而不能被继承。 调用父类的构造方法我们使用super()即可。
Father.java
public class Father {
private String fName;
private int fAge;
public String fSex;
Father() {
System.out.println("Father constructor");
}
public void Work(){
System.out.println("father work");
}
}
Son.java
public class Son extends Father {
@Override
public void Work() {
System.out.println("son work");
}
Son() {
System.out.println("son constructor");
}
public static void main(String[] args) {
Son son = new Son();
son.Work();
}
}