1.继承之初始化顺序
1)初始化父类在初始化子类
2)先执行初始化对象中的属性,在执行构造方法中的初始化
父类对象 -> 属性初始化 -> 构造方法(更改属性值)
|
V
子类对象 -> 属性初始化 -> 构造方法(更改属性值)
demo:
父类:
public class Animal {
public int age = 10; //属性初始化
public String name;
public int food;
/***************************/
public Animal() {
System.out.println("父类初始化");
age = 20; //构造方法更改属性值
}
}
子类:
//class 子类 extends 父类
public class Cat extends Animal {
public Cat() {
System.out.println("子类初始化");
}
}
测试类:
public class TestZiFuLei {
public static void main(String[] args) {
int a = 5;
//建立针对子类的对象
Cat work1 = new Cat(); //创建子类对象时,自动的执行父类的构造方法,
//并且创建父类对象。优先创建父类对象,在创建子类对象
Animal work2 = new Animal();
System.out.println("Animal的属性age的初始化是后来初始化的 :" + work2.age);
//表示属性初始化 -> 构造方法
}
}
运行结果:
父类初始化 //自动执行父类构造方法,并创建父类对象
子类初始化 //然后在执行子类构造方法
父类初始化
Animal的属性age的初始化是后来初始化的 :20