高频面试题 - 类初始化和实例初始化

本文通过一道面试题深入探讨Java中类的初始化和实例初始化的过程,包括类的加载、<clinit>()方法的执行、静态与非静态变量的初始化、构造器的调用以及方法重写和对象多态性的概念。分析了类初始化时先父类后子类的执行顺序,以及实例初始化中构造器的执行流程。
摘要由CSDN通过智能技术生成

1 题目

 问:main 方法执行后,最终输出的结果。

1.1 结果 

2 分析

本题设计三个方面的知识

  1. 类的初始化
    1. 一个类要创建实例,需要先加载并初始化该类
      1. main方法所在的类需要先加载和初始化
    2. 一个子类要初始化,需要先初始化父类
    3. 类的初始化就是执行<clinit>() 方法
      1. <clinit>() 方法由静态类变量显示赋值代码和静态代码块组成
      2. 类变量显示赋值和静态代码块是从上到下执行的
      3. <clinit>() 方法只会执行一次
  2.  实例初始化
    1. 实例初始化就是执行<init>() (构造器)方法
      1. <init>()  方法可能有重载多个,有几个构造器就有几个&l
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值