执行顺序结论:
子类继承父类,创建子类对象时构造函数的执行顺序为
父类成员变量显示初始化 --> 父类构造函数 --> 子类成员变量显示初始化 --> 子类构造
多态调用方法结论:
-
子类引用变量指向子类对象,可以调用父类所有方法;
-
父类引用变量指向子类对象,只能使用父类的方法;
-
调用方法看等号左边;
Father son = new Son(1);
实验:
父类
public class Father {
private String name = "dad";
public Father() {
}
public Father(String name) {
this.name = name;
}
public void eat(){
System.out.println("father eat");
}
public void work(){
System.out.println("father can work");
}
}
子类
public class Son extends Father{
private int age = 10;
public Son() {
}
public Son(int age) {
super("baba");
this.age = age;
}
@Override
public void eat() {
System.out.println("son eat...");
}
public void milk(){
System.out.println("son can milk");
}
}
测试
@Test
public void ExtendTest(){
Father son = new Son(1);
son.eat();
son.work();
Son son1 = new Son(2);
son1.work();
}
Tip : 要从内存的角度和JVM调用的角度理解一下多态!!看书!!