美文网首页
具有继承关系类,代码块执行顺序。

具有继承关系类,代码块执行顺序。

作者: tingshuo123 | 来源:发表于2018-08-09 10:06 被阅读18次

首先先写一个父类

package hello;

public class Animal {
    
    static {
        System.out.println("父类静态代码块");
    }

    public Animal() {
        System.out.println("父类构造方法");
    }
    
    {
        System.out.println("父类普通代码块");
    }
}

写一个子类继承上面的类

package hello;

public class Cat extends Animal {

    static {
        System.out.println("我是子类静态代码块");
    }

    {
        System.out.println("我是子类普通代码块");
    }

    public Cat() {
        System.out.println("我是子类构造方法");
    }

    public static void main(String[] args) {
        System.out.println("我是 main 方法");
        Cat cat = new Cat();
    }
}

写一个测试方法

package hello;

public class TestMain {
    
    public static void main(String[] args) {
        System.out.println("我是 main 方法");
        Cat cat = new Cat();
    }
}

测试类运行结果:

我是 main 方法
父类静态代码块
我是子类静态代码块
父类普通代码块
父类构造方法
我是子类普通代码块
我是子类构造方法

子类 mian 方法运行结果:

父类静态代码块
我是子类静态代码块
我是 main 方法
父类普通代码块
父类构造方法
我是子类普通代码块
我是子类构造方法

通过上面大概可以以下结论:

  1. 子类类在加载时会先加载父类(子类需要继承父类,先加载父类才能知道要继承什么),静态代码块是属于类的,所以类加载时就会执行的静态代码块。
  2. new 子类对象时,也先创建父类对象,而普通代码块,跟构造方法都会在创建对象时执行(普通代码块会先执行)。

以上。

相关文章

网友评论

      本文标题:具有继承关系类,代码块执行顺序。

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