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

2016-11-09  本文已影响0人  EricChou

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();

}

运行结果:

父类--静态代码块

子类--静态代码块

父类--非静态代码块

父类--构造函数

子类--非静态代码块

子类--构造函数

子类--静态方法

上一篇下一篇

猜你喜欢

热点阅读