代码块与内部类的应用——阿里校招题修改版
!!!
各代码块的优先级:
1,主类中的静态代码块——在main方法之前执行——只执行一次;
2,非主类中的静态代码块——实例化对象之后立马执行——只执行一次;
3,构造块——在静态代码块之后执行;
4,构造方法
5,普通代码块。
//主类HelloA
public class HelloA{
//构造方法
public HelloA(){
System.out.println("Hello A!父类构造方法");
}
//构造块
{
System.out.println("Hello A!父类构造块");
}
//非静态代码块
{
System.out.println("i'm A class.父类非静态代码块");
}
//静态代码块
static {
System.out.println("static A 父类静态代码块");
}
}
//主类HelloB
public class HelloB extends HelloA{
//构造方法
public HelloB(){
System.out.println("Hello B! 构造方法");
}
//构造块
{
System.out.println("Hello B!父类构造块");
}
//非静态代码块
{
System.out.println("i'm B class.非静态代码块");
}
//静态代码块
static {
System.out.println("static B 静态代码块");
}
public static void main(String[] args){
System.out.println("start——————");
new HelloB();
new HelloB();
System.out.println("end——————");
}
}
运行结果如下: