首先先写一个父类
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 方法
父类普通代码块
父类构造方法
我是子类普通代码块
我是子类构造方法
通过上面大概可以以下结论:
- 子类类在加载时会先加载父类(子类需要继承父类,先加载父类才能知道要继承什么),静态代码块是属于类的,所以类加载时就会执行的静态代码块。
- 在
new
子类对象时,也先创建父类对象,而普通代码块,跟构造方法都会在创建对象时执行(普通代码块会先执行)。
以上。
网友评论