快捷搜索: 王者荣耀 脱发

Java类的各种成员初始化顺序

参考:

class B extends A ,然后A类也就是父类里面有静态代码块,普通代码块,静态方法,静态成员变量,普通成员变量,普通方法。 子类也是这样,然后继承之后,关于程序打印输出的结果。 涉及到Java类的各种成员的初始化顺序。 经测试,得到如下结论: 执行顺序:按照下面的1-》2-》3-》4-》5-》6步骤 1.父类【静态成员】和【静态代码块】,按在代码中出现的顺序依次执行。 2.子类【静态成员】和【静态代码块】,按在代码中出现的顺序依次执行。 3.父类的【普通成员变量被普通成员方法赋值】和【普通代码块】,按在代码中出现的顺序依次执行。 4.执行父类的构造方法。 5.子类的【普通成员变量被普通成员方法赋值】和【普通代码块】,按在代码中出现的顺序依次执行。 6.执行子类的构造方法。

下面是测试的代码:

package math; public class Parent { static{ System.out.println("Parent--static--静态代码块"); } { System.out.println("Parent--普通代码块"); } public Parent(){ System.out.println("Parent--构造器"); } public static int way(){ System.out.println("Parent--static-方法"); return 1; } public int way1(){ System.out.println("Parent---方法"); return 1; } private static int i=way(); private int i1=way1(); } ------------------------------------------ public class Son extends Parent{ static{ System.out.println("Son--static--静态代码块"); } { System.out.println("Son--普通代码块"); } public Son(){ System.out.println("Son--构造器"); } public static int way(){ System.out.println("Son--static-方法"); return 1; } public int way1(){ System.out.println("Son---方法"); return 1; } private static int i=way(); private int i1=way1(); } --------------------------- 测试: public static void main(String[] args) { new Son(); } 结果: Parent--static--静态代码块 Parent--static-方法 Son--static--静态代码块 Son--static-方法 Parent--普通代码块 Son---方法(父类的方法被子类覆盖了) Parent--构造器 Son--普通代码块 Son---方法 Son--构造器
经验分享 程序员 微信小程序 职场和发展