子类对象的实例化
1.子类对象实例化之前,必须先调用父类中的构造方法,之后调用子类的构造方法。
父类和子类的构造顺序如下:
父类的静态代码块
子类的静态代码块
父类的成员
父类的非静态代码块
父类的构造方法
子类的成员
子类的非静态代码块
子类的构造方法
其中,静态代码块优先加载,成员和非静态代码块按照代码顺序加载,最后加载构造函数。
示例代码:
public class ExtendsDemo03 {
static class A{
public A(String string) {
System.out.println(string);
}
}
static class Father{
{
System.out.println("父类的非静态代码块");
}
private int age;
private String name;
public A a=new A("父类的成员");
public Father(){
System.out.println("父类的构造方法");
}
static {
System.out.println("父类的静态代码块");
}
}
static class Son extends Father{
public A a=new A("子类的成员");
public Son(){
System.out.println("子类的构造方法");
}
static {
System.out.println("子类的静态代码块");
}
{
System.out.println("子类的非静态代码块");
}
}
public static void main(String [] args){
Son son=new Son();
}
}
输出:
父类的静态代码块
子类的静态代码块
父类的非静态代码块
父类的成员
父类的构造方法
子类的成员
子类的非静态代码块
子类的构造方法