结论
1、创建子类后的调用顺序
- 父类静态代码块(注意静态代码块只有首次创建才会执行,之后创建均不执行)
- 子类静态代码块
- 父类非静态代码块
- 父类构造方法
- 子类非静态代码块
- 子类构造方法
2、构造器调用顺序
- 基类递归调用
- 成员构造器按声明顺序调用
- 该类构造器
3、多态
this.method(o) > super.method(o) > this.method((super)o) >
super.method((super)o)
注意:如果某个方法是静态的,那么这个方法就不具有多态性。
案例
public class LambdaDemo {
public static void main(String args[]) {
A a = new B();
a.fun();
System.out.println("---------分割线----------");
A c = new C();
c.fun();
c.fun(a);
}
}
class A {
static{
System.out.println("A static");
}
{
System.out.println("A Non-static");
}
A(){
System.out.println("A Construct");}
public void fun(){
System.out.</