父类 子类 的 静态域,main(),构造代码块,构造方法 如何执行????

简介: 父类 子类 的 静态域,main(),构造代码块,构造方法 如何执行????

一、无继承关系时

 public class Test
{
    public static Test t1 = new Test();//静态变量
     //构造块
    {
        System.out.println("blockA");
    }
     //静态块
     static
    {
        System.out.println("blockB");
    }
    public static void main(String[] args)
    {
        Test t2 = new Test();
    }
}


静态域:用staitc声明,jvm加载类时执行,仅执行一次

构造代码块:类中直接用{}定义,每一次创建对象时执行。

执行顺序优先级:静态域,main(),构造代码块,构造方法。

1 静态域 :首先执行,第一个静态域是一个静态变量 public static Test t1 = new Test(); 创建了Test 对象,会执行构造块代码,所以输出blockA。然后执行第二个静态域(即静态代码块)输出blockB。

2 main():Test t2 = new Test()执行,创建Test类对象,只会执行构造代码块(创建对象时执行),输出blockA。

3 构造代码块只会在创建对象时执行,没创建任何对象了,所以没输出

4 构造函数:使用默认构造函数,没任何输出


二、有父类继承关系


父类静态静态属性–>父类静态代码块–>子类静态属性–>子类静态代码块–>父类构代码块–>父类构造方法–>子类属性赋值–>子类构造代码块–>子类构造方法


2.1 无静态属性情况

class Father {
    // 1.先执行父类静态代码块
    static {
        System.out.println("1.父类静态代码块");
    }
    // 3.执行父类构造代码块
    {
        System.out.println("3.父类构造代码块");
    }
    // 4.执行父类构造方法
    public Father() {
        System.out.println("4.父类构造方法");
        show();
    }
    public void show() {
        System.out.println("父类show");
    }
}
class Son extends Father {
    int num = 2;
    // 2.执行子类静态代码块
    static {
        System.out.println("2.子类静态代码块");
    }
    // 6.执行子类构造代码块
    {
        System.out.println("6.子类构造代码块 num=" + num);
    }
    // 7.执行子类构造方法
    public Son() {
        System.out.println("7.子类构造方法 num=" + num);
    }
    // 5.执行子类方法
    public void show() {
        System.out.println("5.子类show num=" + num);
    }
}
class Test {
    public static void main(String[] args) {
        Son s = new Son();
    }
}

执行结果:=========================================


1.父类静态代码块
2.子类静态代码块
3.父类构造代码块
4.父类构造方法
5.子类show num=0
6.子类构造代码块 num=2
7.子类构造方法 num=2



目录
相关文章
|
机器学习/深度学习 人工智能 API
『GitHub项目圈选06』推荐5款本周 超火 的开源AI项目
『GitHub项目圈选06』推荐5款本周 超火 的开源AI项目
1346 0
|
7月前
|
存储 安全 Ubuntu
从Linux到Windows:阿里云服务器系统镜像适配场景与选择参考
阿里云为用户提供了丰富多样的服务器操作系统选择,以满足不同场景下的应用需求。目前,云服务器的操作系统镜像主要分为公共镜像、自定义镜像、共享镜像、镜像市场和社区镜像五大类。以下是对这些镜像类型的详细介绍及选择云服务器系统时需要考虑的因素,以供参考。
|
9月前
|
机器学习/深度学习 人工智能 搜索推荐
《深度剖析:鸿蒙系统下智能NPC与游戏剧情的深度融合》
鸿蒙系统为游戏开发带来新机遇,尤其在人工智能游戏中,实现智能NPC与剧情的深度融合成为关键。通过机器学习行为模型和感知决策系统,NPC能根据玩家操作做出合理反应;结合动态剧情生成和数据驱动融合方式,使游戏体验更沉浸、个性化。尽管面临技术挑战,但鸿蒙系统的多设备协同和性能优势,为打造未来智能化游戏奠定了基础。
364 11
|
小程序 JavaScript
微信小程序之input组件及其获取用户输入信息
微信小程序之input组件及其获取用户输入信息
342 2
|
安全 Java 网络安全
SpringBoot 优雅停止服务的几种方法
SpringBoot 优雅停止服务的几种方法
702 0
|
人工智能 弹性计算 并行计算
操作系统迁移难?Alibaba Cloud Linux 支持跨版本升级 | 龙蜥技术
无需担心数据丢失,无需考虑如何解决在升级后同步问题。
|
消息中间件 监控 中间件
阿里云中间件有哪些?这里最全面
这其实是一个比较虚的概念。广义的中间件范围很广。起沟通作用的都可以认为是中间件。甚至ODBC这样的东西你也可以认为是中间件。 而阿里云的中间件就比较多了
9769 102
|
NoSQL 芯片 网络架构
OpenOCD(七):TAP声明
OpenOCD(七):TAP声明
551 1
|
SQL Oracle 关系型数据库
通过sqlplus执行*.sql文件时常见的问题总结
案例1说明: 利用 sqlplus 登录数据库之后 键入: @文件名 全路径     即可执行*.sql 文件 例:假设有一个 test.sql 文件 所在路径是/home/oracle/  现在要执行它 1 登录数据库 sqlplus system/manager 2 在提示符 SQL> 之后键入 SQL> @/home/oracle/test.sql;
2226 0
|
存储 Java 数据中心
服务发现框架Consul的使用
服务发现框架Consul的使用
408 0