java的父子类加载顺序

来源:互联网 发布:乐视max2 root软件 编辑:程序博客网 时间:2024/06/07 17:07

若有不正之处,请多多批评并指教。

先上代码:

父类的代码:

public abstract class ABSclass {private static int b=3;static{int s=8;System.out.println("父类静态块");}public ABSclass() {b=b+3;System.out.println("父类构造方法");}public ABSclass(int a) {b=b+3;System.out.println("带参数的父类构造方法");}{System.out.println("父类构造块");}//i=i+3;  错   逻辑操作,要放在方法中执行public abstract void m(int a);private int me(){return a;};private void me(int a){};//i=i+4;}
   子类and 测试类的代码:

public class Test extends ABSclass {public Test(){System.out.println("子类构造方法");}public Test(int a){System.out.println("A"+a);}{System.out.println("子类构造块");}static{System.out.println("子类静态块");}@Overridepublic void m(int a) {// TODO Auto-generated method stubSystem.out.println("继承");}public static void main(String[] args) {new Test(2);}}


在看看结果 :

   父类静态块
子类静态块
父类构造块
父类构造方法
子类构造块
A2



由上,我们可以知道他们执行的顺序:

1、父类的静态块或者变量 ,静态块和变量 按先后顺序初始化,即谁的代码行序越小谁越先;

2、子类的静态块和变量;

3、父类的构造块;

4、父类的无参构造方法;

5、子类的构造块;

6、子类的构造方法,子类的构造方法根据实例化的时候是否传入参数而定;

1 0
原创粉丝点击