java初学者踩得雷

目录

一段子父类调用重写的代码

1. 重写的代码

2. 执行结果

3. 分析原因

4. 总结概括


 

一段子父类调用重写的代码

这是一段有坑的代码,我们创建一个子类A和父类B,A中重写function方法,并且在B的构造方法中调用function

1. 重写的代码

class B{
    public B(){
        function();//啥也不做
    }

    public void function(){
        System.out.println("B.function()");
    }
}


class A extends B{
    private int num = 10086;
    @Override
    public void function(){
        System.out.println("A.function()" + num);
    }
}


public class Main {
    public static void main(String[] args) {
        A a = new A();
    }
}

 

2. 执行结果

 

3. 分析原因

首先,构造A对象的同时,会调用B的构造方法 

然后,B的构造方法中调用了function方法,此时就会触发动态绑定,使调用到A中的function

接着,A对象此时自身还没有构造,而且此时的num还处在未初始化的状态,值默认为0.

最后,便打印出来A.function()0

4. 总结概括

 总结:我们应该尽量避免在构造函数内使用实例方法(除了finalprivate方法)。“用尽量简单的方式使对象进入可工作状态”,尽量不在构造器中调用方法(如果方法被子类重写,就会触发动态绑定,但是此时子类对象还没有构造完成),就可能会出现一些隐藏的、极难发现的问题,上文例子比较简单,若是大型代码,便难以找出问题所在了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/143466.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Huggingface

1 介绍 Hugging Face 是一个开源模型社区。目前已经共享 300k 模型,100k 应用,50k 数据集(截至 231114 数据),可视为 AI 界的 github。 2 官网 https://huggingface.co/ 3 主要功能 3.1 Models 模型 大家都用过就…

BUUCTF 爱因斯坦 1

BUUCTF:https://buuoj.cn/challenges 题目描述: 下载附件,解压得到一张.jpg图片。 密文: 解题思路: 1、因为题目没有什么提示,我们就一一尝试。将图片放到StegSolve中,在查看图片的File Format时&#x…

长假想要获得理想投放效果?巨量千川给出解决方案

巨量千川一直对商家的体验格外关注,了解到许多千川投手和商家在长假投放存在困难时,便深入了解原因,并针对问题提出了可行的解决方案。 发现原因有三: 其一,每逢节假日,大家都明白流量都会相对充足&#xf…

【postgresql】查看数据中表的信息

切换到postgresql数据库,各种不适应吧。 有个需求需要查询数据表的各种信息。 下面我们一起学习吧。 PostgreSQL: Documentation PostgreSQL: Documentation pg_namespace 存储名字空间。名字空间是 SQL 模式下层的结构:每个名字空间有独立的关系&am…

【模式识别】计算机科学博士课程作业解析

作业二 2.1 最小风险贝叶斯决策分类计算 1、请给出以下问题的求解步骤,逐步给出计算过程: 已知条件为 P(w_1) 0.9 P(w_2)0.1 p(x|w_1)0.2 p(x|w_w)0.4 λ 11 0 \lambda_{11}0 λ11​0, λ 12 6 \lambda_{12}6 λ12​6 λ 21 1 \lambda_{21}1 …

优秀智慧园区案例 - 新华三未来工厂制造园,园区业务创新及零碳升级

目录 一、新华三未来工厂制造园建设背景 二、未来工厂制造园总体设计思路 三、未来工厂制造园建设内容 四、关键技术及创新点 五、应用效益与推广 关键词:智慧园区解决方案,智慧园区建设总体方案,智慧园区建设规划方案,智慧园…

label

可以为input元素定义标注。点击label标签内文本时,浏览器自动将光标转到或选择对应表单元素上。 label中for属性应当与相关元素的id属性相同

详述使用CubeMX配置STM32RCC时钟

🙌秋名山码民的主页 😂oi退役选手,Java、大数据、单片机、IoT均有所涉猎,热爱技术,技术无罪 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 获取源码,添加WX 目录 前言一…

2013年01月16日 Go生态洞察:并发不是并行

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

DBeaver clickhouse 时区不对 时间少了8小时,本人的有效,网上好多都是扯犊子

特别注意:use_time_zone Asia/Shanghai use_server_time_zone true

知识竞赛中常用的物料有哪些

办一场知识竞赛,需要准备的物料要根据具体竞赛规则和流程来定。但是要仔细分析起来,还是可以做一个常用物料清单的,下面我将知识竞赛活动中常用的物料做了一个分类和列表,大家以后在竞赛活动举办过程中,可以参考。 一、…

单独设置echarts图例样式

参考:echarts-legend legend: [{data: [{name: 正常,icon: rect}],itemWidth: 16,itemHeight: 4,top: 6%,left: 35%,textStyle: {color: #626C78,fontSize: 14}},{data: [{name: 异常,icon: rect}],itemWidth: 16,itemHeight: 4,top: 6%,left: 50%,textStyle: {col…

JavaScript数据类型和存储区别

目录 一、原始数据类型 二、引用数据类型 三、存储区别 四、常见错误 JavaScript是一种动态类型语言,这意味着变量可以在程序执行过程中改变其数据类型。了解JavaScript中的数据类型和它们的存储方式对于编写高效和可维护的代码至关重要。 在JavaScript中&…

苹果手机通话记录怎么恢复?这3个方法就足够!

通话记录是手机中的重要数据之一,它记录了用户与联系人的通话信息,包括通话时间、通话时长、通话号码等等。 有时候,我们可能不小心删除了通话记录,或者想找回之前的通话记录以此来回忆起一些事情。那么,苹果手机通话…

基于安卓android微信小程序的快递取件及上门服务系统

项目介绍 本文从管理员、用户的功能要求出发,快递取件及上门服务中的功能模块主要是实现管理员服务端;首页、个人中心、用户管理、快递下单管理、预约管理、管理员管理、系统管理、订单管理,用户客户端;首页、快递下单、预约管理…

电压放大器适合什么应用

电压放大器是电子电路中常见的一种放大器,广泛应用于各个领域。本文将详细介绍电压放大器的特点和适用的主要应用。 电压放大器具有放大信号的功能,可以将输入信号的幅度放大数倍或数十倍。这使得电压放大器在各种需要信号增强的应用中非常重要。以下是电…

一寸证件照排版工具,在线将证件照排版在相纸上

证件照是我们经常使用到的一种办事资料,考试报名和办理个人证件都是需要的,很多时候需要纸质照片,如果我们手头有打印机的话就很方便了,但相纸都是固定尺寸的例如5寸、6寸相纸,而数码证件照的尺寸则不固定,…

isomorphic-fetch库代码示例

isomorphic-fetch库的爬虫程序。 typescript // 引入isomorphic-fetch库 import fetch from isomorphic-fetch; // 设置 const proxy ; // 定义视频URL const url ; // 使用fetch获取视频数据 fetch(url, { method: GET, headers: { Accept: application/json, …

手写模拟SpringBoot核心流程

文章目录 1、创建工程1.1、pom依赖 1、创建工程 创建一个工程,包含springboot和user两个module springboot模块,表示springboot框架的源码实现user包,表示用户业务系统,用来写业务代码来测试我们所模拟出来的SpringBoot 1.1、…