【软件工程师从0到1】- 继承 (知识汇总)

 前言

介绍:大家好啊,我是hitzaki辰。

社区:(完全免费、欢迎加入)日常打卡、学习交流、资源共享的知识星球。

自媒体:我会在b站/抖音更新视频讲解 或 一些纯技术外的分享,账号同名:hitzaki辰。

正文开始,抓紧上车!

8f4dc768ffa445d78de7eb9469c55c3d.png


一 - 概念

继承是类与类的一种关系,是一种“is a”的关系。比如“狗”继承“动物”,这里动物类是狗类的父类或者基类,狗类是动物类的子类或者派生类。

java中的继承是单继承,即一个类只有一个父类。在Java中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作子类,现有类被称作父类。

继承的好处:   子类拥有父类的所有属性和方法(除了private修饰的属性不能拥有)从而实现了实现代码的复用;

语法规则:     只要在子类加上extends关键字继承相应的父类就可以了:

 

若继承的父类没有无参构造,但我们在构造方法也没调用它的有参构造,则报错,因为使用new构造一个对象时,

会先执行父类的构造方法,若没有使用super(参数列表)来调用父类指定构造方法,则默认调用父类无参构造方法。

二 - super关键字

它是一个关键字,用来表示父类,但不像this一样是一个实际变量,它不可以作为变量使用。它可以:

(1)调用父类构造方法,构造方法第一行且只能调用一次

(2)可以调用父类的非私有方法、属性

三 - 根类Object

Object类是所有类的父类(基类),如果一个类没有明确的继承某一个具体的类,则将默认继承Object类。

Object 类是所有 Java 类的根基类,也就意味着所有的 Java 对象都拥有Object 类的属性和方法。

da736f1566964e29a4f689c66e9f217d.png

实现了Cloneable接口,才可以调用clone。

1 - toString

 获取对象信息的字符串,默认返回 "类名+@+hashCode()返回结果的十六进制格式"(重写它以返回自定义信息)

2 - equals

(1)它的原始实现是使用 == 来比较指针的值, 但系统类一般已经覆盖了equals(),比较的是内容。

(2)==符号不可以比较两个没有父子关系的对象。

 

如何高质量实现equals重写?

1. 使用==符号检查

2. 使用instanceof判断类型是否相同,作为比较的是equals方法所在类。

3. 进行类型转换,因为使用过instanceof,所以能比较成功的一定可以转换。

4. 比较每个关键属性,全部比较通过则返回true。

5. 测试重写的equals是否符合这5点。

f113dfd351bd49c495b2ed845557b8be.png

3 - hashCode

1)hashCode的默认实现是一个本地方法,不同虚拟机有不同实现。

2)无论是否覆盖,我们可以使用System.identityHashCode(Object x)方法返回此对象默认的hashcode值。

3)设计一个hashCode,它必须快,而且具有意义(使用有意义的字段来生成hashcode)。

4)hashCode不需要唯一(默认的hashCode唯一),因此更应该关注它的速度,而不是唯一性。

4 - 为什么hash和equals要一起重写

为了使诸如HashMap这样的哈希表正常使用,才有了如下的规定:

(因为我们想快速定位一个key,若通过equals一个一个比较,效率太低了,所以引入了hashcode)

eca4254c7ddd48ad870bd6c5d5664d0c.png

1)因此,重写了equals,必须重写hashCode,使其满足这些规定。

2)当然,如果我们不把自定义对象当成HashMap的键来使用,那么自定义对象不重写equals和hashCode也是可以的。

3)拿它当键时,哈希值是会发生冲突的,当定位到同一个位置,只能通过equals才能定位了正确的位置。

5 - finalize

finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,

  可以覆盖此方法提供垃圾收集时的敏感词资源的回收,例如关闭文件等。(可以,但是不建议这么做)

结尾

感谢你看到这里,如果感觉内容不错的话请点赞支持一下!

如果小伙伴对我的讲解有疑问,欢迎评论区讨论。

 

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

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

相关文章

React函数组件渲染两次

渲染两次是因为react默认开启了严格模式 React.StrictMode标签作用: 1、识别不安全的生命周期 2、关于使用过时字符串 ref API 的警告 3、关于使用废弃的 findDOMNode 方法的警告 4、检测意外的副作用 5、检测过时的 context API 注释掉React.StrictMode即为关闭严…

webpack external 详解

作用:打包时将依赖独立出来,在运行时(runtime)再从外部获取这些扩展依赖,目的时解决打包文件过大的问题。 使用方法: 附上代码块 config.set(externals, {vue: Vue,vue-router: VueRouter,axios: axios,an…

springboot+jsp+bootstrap+java问卷调查系统

系统功能需求包含业务需求和功能需求,系统功能需求分析是在了解用户习惯、开发人员技术和实力等各个因素的前提下,对其进行深入分析,了解系统基本需求后,基本功能如下: 本课题要求实现优质的问卷调查系统,就…

JavaScript中的设计模式

目录 1.工厂模式 2.构造函数模式 构造函数中new关键字作用: 3.原型模式 4.组合模式 JavaScript中有四种常见的设计模式 ,目的是为了批量创建对象 为了实现继承。 1.工厂模式 利用工厂模式批量创建对象 优点:可以批量创建对象 …

苹果录音删除了可以恢复吗?请收藏好这些方法!

录音可以用于记录重要的信息,比如会议记录、课堂讲解、创作灵感等等。通过录制好的音频,我们可以随时回放这些录音,以便后续参考和使用。 但难免会发生意外,我们有时候可能会不小心删除手机中的录音文件。苹果录音删除了可以恢复…

bootstarp+springboot基于Java的教学仪器设备商城销售网站_o9b00

1、商品分类功能 商品分类是教学仪器设备销售网站中十分重要的一部分,它能够提高用户在网站上的浏览速度,并方便用户快速找到自己需要的商品。因此,需要对该功能进行分析和设计,确保其体验性、可用性和易用性。可以将商品分为多个…

如何配置ESB单据集成接口

ESB企业服务总线在实际项目中主要用于各业务系统之间的集成,集成包括数据集成、应用集成以及业务单据集成等,ESB企业服务总线主要包含三部分:ESB设计器、SMC管理控制台以及Server运行环境,ESB设计器用于服务以及集成流程的开发&am…

04-React脚手架 集成Axios

初始化React脚手架 前期准备 1.脚手架: 用来帮助程序员快速创建一个基于xxx库的模板项目 1.包含了所有需要的配置(语法检查、jsx编译、devServer…)2.下载好了所有相关的依赖3.可以直接运行一个简单效果 2.react提供了一个用于创建react项目的脚手架库…

python -opencv形态学操作

python -opencv形态学操作 1.服饰和膨胀 1.服饰和膨胀 opencv 腐蚀通过cv2.erode实现,膨胀通过cv2.dilate实现,看一下下面代码: from ctypes.wintypes import SIZE from multiprocessing.pool import IMapUnorderedIterator import cv2 i…

springboot+bootstarp+jsp房屋租赁系统ssm_t65a9

小型房屋租赁系统主要有管理员、房东和租户三个功能模块。以下将对这三个功能的作用进行详情的剖析。 管理员模块:管理员是系统中的核心用户,管理员登录后,可以对后台系统进行管理。主要功能有个人中心、房东管理、租户管理、房源城市管理、房…

VS Code 使用python快捷键

VS Code 快捷键大全 官方地址:https://code.visualstudio.com。 CtrlShiftP 搜索任意插件(最重要的快捷键)CtrlF5 运行代码 1、通用 CtrlShifP , F1 打开命令面板 CtrlP 快速打开 CtrlShiftN 打开新实例窗口 CtrlShiftW 关闭窗口实例 2、…

实时云渲染 助力破解智慧园区痛点困局

智慧园区是运用先进的信息技术,如物联网(IoT)、大数据、云计算、人工智能、三维可视化等,对园区内的各类设施、资源以及管理进行智能化和数字化升级。其目标是通过科技手段提升园区的运营效率、资源利用率,提供更便捷、…

推荐系统概述(PPT)

参考资料: 推荐系统系列之推荐系统概览(上) | 亚马逊AWS官方博客推荐系统系列之推荐系统概览(下) | 亚马逊AWS官方博客 目录如下: 推荐系统简介 推荐系统中常见概念 推荐系统中常用的评价指标 首页推荐…

算法---腐烂的橘子

题目 在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一: 值 0 代表空单元格; 值 1 代表新鲜橘子; 值 2 代表腐烂的橘子。 每分钟,腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。 返回 直到单元格…

深度之眼Paper带读笔记GNN.08.GCN(下)

文章目录 前言细节四:卷积核介绍图卷积核初代目图卷积核二代目契比雪夫多项式例子小结 GCN公式推导 实验设置和结果分析数据集节点分类任务消息传递方式比较运行效率 总结关键点创新点启发点 代码复现train.pyutil.pymodel.pylayer.py 作业 前言 本课程来自深度之眼…

DC电源模块检测故障步骤有哪些

BOSHIDA DC电源模块检测故障步骤有哪些 DC电源模块检测故障步骤如下: 1. 检查输入电压:用万用表测量输入电压,确保其在规定范围内。 2. 检查输出电压:用万用表或示波器测量输出电压,确保其在规定范围内。 3. 检查输…

电机应用开发-直流有刷电机速度环控制实现

直流有刷电机速度环控制实现 硬件设计 可选:L298N电机驱动板、野火MOS搭建的驱动板。 直流电机速度环控制-位置式PID实现 编程要点 配置定时器可以输出PWM控制电机 配置定时器可以读取编码器的计数值 配置基本定时器可以产生定时中断来执行PID运算 编写位置式PID算…

Speech | openSMILE语音特征提取工具

官方地址:openSMILE 3.0 - audEERING 使用指导:openSMILE — openSMILE Documentation (audeering.github.io) openSMILE 简介 openSMILE是一款以命令行形式运行的工具,通过配置config文件来提取音频特征。主要应用于语音识别、情感计算、音…

请求的接口响应状态为已取消的原因

有趣的iframe问题 今天遇到一个问题,当点击了按钮----跳转页面时----F12键点击网络中的状态报了已取消,类型是 document说明是前端页面的问题,如果是xhr那可能是接口的问题。 原本是写了3个iframe,页面刷新的时候请求了第一个iframe,然后就…