java静态块,非静态块,构造函数


  1. java静态块是在类加载时自动执行的,非静态代码块是在创建对象时自动执行的代码。不创建对象不执行该类的非静态代码块。顺序是静态块-->非静态块-->构造函数。

  2. 静态代码块只在第一次new时执行一次,而非静态代码块每new一次就执行一次。

父类:

package test;


public abstract class fu {

private int age;

public abstract void test();

static {

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

}

public fu(){

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

}

 

{

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

}

}

子类:

package test;


public class zi extends fu{

static{

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

}

public zi(){

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

}

{

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

}

@Override

public void test() {

System.out.println("这是子类方法");

}

}

Main函数

package test;


public class Main {


public static void main(String[] args) {

fu zi=new zi();

zi.test();


}


}

结果:

这是父类静态代码块

这是子类静态代码块

这是父类非静态代码块

这是父类构造函数

这是子类非静态代码块

这是子类构造函数

这是子类方法


你可能感兴趣的:(java静态块,非静态块,构造函数)