package com.fy;
/**
*代码分析题:
* 分析父类,子类中的静态代码块,构造代码块的运行机制
* @author 江湖@小小白
*/
public class Test1 {
public static void main(String[] args) {
/**
* 创建子类对象时的运行机制分析:
* 1. 首先类子对象的创建,进行了类加载
* 2. 在类加载时,执行静态代码块
* 3. 因为子类继承父类,有一个默认的super()无参构造方法,此时调用父类中的无参构造方法
* 4. 类加载时,优先执行静态代码块,因此会执行流程:
* 父类的静态代码块 ——>子类的静态代码块 ——> 父类的构造代码块 ——> 父类的构造器 ——> 子类的构造代码块 ——> 子类的构造器
*/
//Zi z = new Zi();
/**
* 创建对象,父类引用指向子类对象:
* 1. 创建对象时,进行类加载;
* 2. 类加载,执行静态代码块
* 3. 执行父类的构造代码块
* 4. 子类中默认super()方法,调用父类中的无参构造方法
* 5. 执行子类中的方法
*/
Fu f = new Zi();
}
static class Fu {
static {
System.out.println("父类的静态代码块");
}
{
System.out.println("父类的构造代码块");
}
public Fu() {
System.out.println("父类的构造器");
}
}
static class Zi extends Fu {
public Zi() {
System.out.println("子类的构造器");
}
{
System.out.println("子类的构造代码块");
}
static {
System.out.println("子类的静态代码块");
}
}
}
16. 代码分析题:请分析父类与子类中的静态代码块,构造代码块,以及构造方法三者之间的运行机制
猜你喜欢
转载自blog.csdn.net/zhu_fangyuan/article/details/108597500
今日推荐
周排行