牛客刷题 类加载的顺序

简介: 牛客刷题 类加载的顺序
public class Base
{
    private String baseName = "base";
    public Base()
    {
        callName();
    }
    public void callName()
    {
        System. out. println(baseName);
    }
    static class Sub extends Base
    {
        private String baseName = "sub";
        public void callName()
        {
            System. out. println (baseName) ;
        }
    }
    public static void main(String[] args)
    {
        Base b = new Sub();
    }
}


输出:null


1.首先,需要明白类的加载顺序。


(1) 父类静态代码块(包括静态初始化块,静态属性,但不包括静态方法)


(2) 子类静态代码块(包括静态初始化块,静态属性,但不包括静态方法 )


(3) 父类非静态代码块( 包括非静态初始化块,非静态属性 )


(4) 父类构造函数


(5) 子类非静态代码块 ( 包括非静态初始化块,非静态属性 )


(6) 子类构造函数


其中:类中静态块按照声明顺序执行,并且(1)和(2)不需要调用new类实例的时候就执行了(意思就是在类加载到方法区的时候执行的)


2.其次,需要理解子类覆盖父类方法的问题,也就是方法重写实现多态问题。


Base b = new Sub();它为多态的一种表现形式,声明是Base,实现是Sub类, 理解为 b 编译时表现为Base类特性,运行时表现为Sub类特性。


当子类覆盖了父类的方法后,意思是父类的方法已经被重写,题中 父类初始化调用的方法为子类实现的方法,子类实现的方法中调用的baseName为子类中的私有属性。


由1.可知,此时只执行到步骤4.,子类非静态代码块和初始化步骤还没有到,子类中的baseName还没有被初始化。所以此时 baseName为空。 所以为null。

相关文章
|
算法 搜索推荐 安全
淘宝信息流融合混排服务升级
淘宝信息流融合混排服务升级
890 1
|
9月前
|
人工智能 数据可视化 搜索推荐
免费+数据安全!手把手教你在PC跑DeepSeek-R1大模型,小白也能秒变AI大神!
本地部署AI模型(如DeepSeek R1)保障数据隐私、节省成本且易于控制,通过Ollama平台便捷安装与运行,结合可视化工具(如Chatbox)及Python代码调用,实现高效、个性化的AI应用开发与使用。
586 3
免费+数据安全!手把手教你在PC跑DeepSeek-R1大模型,小白也能秒变AI大神!
|
11月前
|
存储 缓存 安全
Java 集合江湖:底层数据结构的大揭秘!
小米是一位热爱技术分享的程序员,本文详细解析了Java面试中常见的List、Set、Map的区别。不仅介绍了它们的基本特性和实现类,还深入探讨了各自的使用场景和面试技巧,帮助读者更好地理解和应对相关问题。
179 5
|
11月前
|
数据采集 机器学习/深度学习 人工智能
智能运维在IT管理中的实践与探索
【10月更文挑战第21天】 本文深入探讨了智能运维(AIOps)技术在现代IT管理中的应用,通过分析其核心组件、实施策略及面临的挑战,揭示了智能运维如何助力企业实现自动化监控、故障预测与快速响应,从而提升整体运维效率与系统稳定性。文章还结合具体案例,展示了智能运维在实际环境中的显著成效。
213 4
|
JSON 人工智能 自然语言处理
Way To Prompt系列(1): 为什么大模型连"Strawberry"的"r"都数不对?一招“理由先行”显著提升模型思考能力
本文将从两个常见的大模型翻车问题入手解析这些问题背后体现的大模型技术原理(Tokenization与预测下一个Token),并解释了为什么会导致这些问题,接着我们利用CoT(思维链)方法解决这些问题并基于上述原理试图剖析CoT方法起作用的可能原因,最后提出【理由先行】风格这一简单有效的Prompt Trick。
325 2
|
机器学习/深度学习 人工智能 自然语言处理
智能语音电话机器人免费部署。免费部署
智能语音电话机器人免费部署。免费部署
409 1
|
Java 应用服务中间件 测试技术
Java21虚拟线程:我的锁去哪儿了?
【10月更文挑战第8天】
289 0
|
XML JSON 前端开发
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(排它条件网关)
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(排它条件网关)
366 3
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(排它条件网关)
SVG pattern 使用(patternUnits、patternContentUnits)
SVG pattern 使用(patternUnits、patternContentUnits)
444 0
|
开发框架 监控 .NET
开发者的革新利器:ASP.NET Core实战指南,构建未来Web应用的高效之道
【8月更文挑战第28天】本文探讨了如何利用ASP.NET Core构建高效、可扩展的Web应用。ASP.NET Core是一个开源、跨平台的框架,具有依赖注入、配置管理等特性。文章详细介绍了项目结构规划、依赖注入配置、中间件使用及性能优化方法,并讨论了安全性、可扩展性以及容器化的重要性。通过这些技术要点,开发者能够快速构建出符合现代Web应用需求的应用程序。
226 0