美文网首页
关于静态块,静态方法,非静态方法,构造方法执行的顺序

关于静态块,静态方法,非静态方法,构造方法执行的顺序

作者: EricChou | 来源:发表于2016-11-09 21:13 被阅读0次

    1.无继承

    public class uExtend {

    public static void test(){

    System.out.println("父类--静态方法");  //被子类的相同方法覆盖

    }

    static {

    System.out.println("父类--静态代码块");

    }

    public uExtend() {

    System.out.println("父类--构造函数");

    }

    {

    System.out.println("父类--非静态代码块");

    }

    public static void main(String[] args) {

    uExtend.test();

    new uExtend();

    }

    }

    执行结果:静态代码块>静态方法>非静态代码块>构造函数

    如果主函数中调用方法在新建对象之后的话,那么静态方法就在最后执行

    2.有继承

    public class ExA {

    public static void test(){

    System.out.println("父类--静态方法"); //被子类的相同方法覆盖

    }

    static {

    System.out.println("父类--静态代码块");

    }

    public ExA() {

    System.out.println("父类--构造函数");

    }

    {

    System.out.println("父类--非静态代码块");

    }

    }

    class ExB extends ExA {

    public static void test(){

    System.out.println("子类--静态方法");

    }

    static {

    System.out.println("子类--静态代码块");

    }

    {

    System.out.println("子类--非静态代码块");

    }

    public ExB() {

    System.out.println("子类--构造函数");

    }

    }

    public static void main(String[] args) {

    new ExB();

    ExB.test();

    }

    运行结果:

    父类--静态代码块

    子类--静态代码块

    父类--非静态代码块

    父类--构造函数

    子类--非静态代码块

    子类--构造函数

    子类--静态方法

    相关文章

      网友评论

          本文标题:关于静态块,静态方法,非静态方法,构造方法执行的顺序

          本文链接:https://www.haomeiwen.com/subject/gketpttx.html