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

news2024/11/16 3:30:11

 前言

介绍:大家好啊,我是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类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,

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

结尾

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

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

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《golang设计模式》第三部分·行为型模式-06-备忘录模式(Memento)

文章目录 1. 概述1.1 角色1.2 类图 2. 代码示例2.1 设计2.2 代码2.3 类图 1. 概述 备忘录(Memento)用于在不破坏目标对象封装特性的基础上,将目标对象内部的状态存储到外部对象中,以备之后恢复状态时使用。 1.1 角色 Originato…

kibana 7安装

手动安装 下载 wget https://artifacts.elastic.co/downloads/kibana/kibana-7.17.15-linux-x86_64.tar.gz 解压 mv kibana-7.17.15-linux-x86_64.tar.gz /usr/local tar -zxvf kibana-7.17.15-linux-x86_64.tar.gz chown -R es:es kibana-7.17.15-linux-x86_64修改配置 s…

深圳锐科达SV-X7 sip话机与海康威视摄像头联动设置方法

深圳锐科达SV-X7 sip话机与海康威视摄像头联动设置方法 SIP对讲终端获取设备IP地址方式 通过长按速拨键3秒(上电30秒后,即听到提示音后),待喇叭发出急促嘟嘟声,再快速按一下速拨键,设备自动语音播报本机的…

Vue弹窗的使用

Vue弹窗的使用: Vue弹窗传值:

requests 库中响应最大文件大小和最大连接超时时间的设定

最近,requests-toolbelt库的开发者jvanasco提出了一项特性请求,即在发送请求时设置响应的最大文件大小和最大连接超时时间。 对于最大连接超时时间的问题,我们可以借鉴requests-toolbelt库的开发者kevinburke的建议,将请求放入线程…

基于SSM的焦作旅游协会管理系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

3D打印新突破:可一次性打印出带骨骼、肌腱、韧带的机械手

原创 | 文 BFT机器人 近日,来自瑞士苏黎世联邦理工学院 (ETH) 和美国初创公司Inkbit的研究团队采用最新的激光扫描技术,成功地实现了机械手的3D打印,其内部结构由类人骨骼、韧带和肌腱组成。这项新技术使一次性3D打印具有弹性的特种塑料成为…

足底筋膜炎症状及治疗方法

足底筋膜炎是一种常见的足部疾病,通常会引起足跟疼痛和不适。这种疼痛通常在早晨起床后或者长时间休息后更为明显,行走一段时间后可能会减轻。下面我们将详细介绍足底筋膜炎的症状及治疗方法。 一、足底筋膜炎的症状 足跟疼痛:这是足底筋膜…

Nacos升级2.2.2 相关版本升级及升级中问题【下篇】

上篇对nacos进行了升级,如果有不清楚的小伙伴可以参考文章:https://blog.csdn.net/weixin_38801572/article/details/130237813 本篇主要是对升级后的鉴权问题进行处理,找了好多的文章都是添加username、password操作,但是实际操作…

HT513 I2S输入的音频功放的应用场景

HT513 I2S输入的音频功放的应用场景于:・智N家居 ・智N玩具 ・IoT设备 ・游戏设备・智N音箱 ・其他锂电/5V设备等等。 HT513内部集成了DA转换器,其I2S输入支持32-bit字节,并且可自动监测采样频率,支持192kHz。 HT513集成的D类音…

Spring——感谢尚硅谷官方文档

Spring——尚硅谷学习笔记 1 Spring简介👾1.1 Spring概述1.2 Spring Framework1.2.1 Spring Framework特性1.2.2 Spring Framework五大功能模块 2 IOC-IOC容器思想👾IOC容器思想IOC在Spring中的实现 3 IOC-基于XML文件管理Bean👾3.1 准备工作…

Cannot read properties of undefined (reading ‘resetFields‘)“ 报错解决

遇到这种报错 先去相关页面搜索关键字 定位到具体的报错代码 Cannot read properties of undefined (reading ‘resetFields’)" 关键字:resetFields 此方法作用:对整个表单进行重置 将所有字段值重置为初始值并移除校验结果 报错场景:…

基于高质量训练数据,GPT-4 Turbo更出色更强大

11月7日消息,OpenAI在首届开发者大会上正式推出了GPT-4 Turbo。 与GPT-4相比,GPT-4 Turbo主要有6方面的提升: 1、扩展下文对话长度:GPT4最大只能支持8k的上下文长度(约等于6000个单词),而GPT-4…

Go 异常处理流程

在 Go 语言中,panic、recover 和 defer 是用于处理异常情况的关键字。它们通常一起使用来实现对程序错误的处理和恢复。 1. defer 语句 defer 用于在函数返回之前执行一段代码。被 defer 修饰的语句或函数会在包含 defer 的函数执行完毕后执行。defer 常用于资源清…

Django学习日志09

choices参数的使用 """对于以上可能被我们列举完的字段我们一般都是选择使用choices参来做""" class UserInfo(models.Model):username models.CharField(max_length64)password models.CharField(max_length32)# 先写一个映射关系gender_cho…

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

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

如何选择一款快速可靠的文件自动同步软件?

在企业的数据流转管控过程中,经常会遇到频繁的数据备份、同步,人工重复这样的工作程序,既繁琐又容易出错。越来越多的企业,要求内部各种业务数据在多台服务器之间、多个数据中心之间,乃至多云和本地之间调度和同步。很…

黔院长 | 中医上所说的虚实到底是什么?

虚实是中医上经常出现的词语,例如脾虚、肾虚等也都是我们经常听到的症状。各种病症的发生都有虚实的不同,那什么是虚实呢?在《黄帝内经》当中就有相关的叙述: 所谓虚实,是正气与邪气相比较而言的。什么是正什么是邪&am…

python 实现银行卡号查询银行名称和简称

本章教程利用python实现查询银行卡号名称和简称 。 目录 一、 实例代码 二、运行效果 一、 实例代码 #!/usr/bin/python # -*- coding: UTF-8 -*- """ author: Roc-xb desc: python 实现银行卡号查询银行简称 """ import requestsdef bank_mes…

Java入门篇 之 内部类

本篇碎碎念:本篇没有碎碎念,想分享一段话: 你不笨,你只是需要时间,耐心就是智慧,不见得快就好,如果方向都不对,如果心术不正,如果德不配位,快就是对自己天分的…