当前位置: 首页 > news >正文

Java小白入门到实战应用教程-重写和重载

引言

在上一节中我们学习了面向对象中的继承,然后在那一节中我们提到了一个知识点叫做:重写。

通过上节的代码样例我们也观察到了,重写是发生在子类和父类的这种继承关系中。

继承的特点就是提取所有子类共有的属性和方法,但是不同的子类可能对于同一方法有不同的业务处理逻辑。所以重写就是解决这一类问题的。

跟重写知识点名称比较相似的一个知识点叫做:重载,这两个知识点名称相似,所以我们把他们放在一个章节去详细讲解,帮助大家更好的掌握和区分。

正文

方法重写Override

定义

方法重写是子类对父类中的方法进行重新实现的过程。当子类中存在一个与父类同名、参数列表相同且返回类型兼容(或相同)的方法时,子类的方法会覆盖(或称为重写)父类中的方法。

规则
  1. 方法名和参数列表必须相同:子类的重写方法必须与父类中被重写的方法具有相同的函数名和参数列表,包括参数的顺序。
  2. 返回类型兼容:子类的重写方法的返回值类型必须等于或小于父类被重写方法的返回值类型,即子类的返回类型可以是父类返回类型的子类或者与父类返回类型一致。
  3. 异常类型兼容:子类重写方法所抛出的异常必须与父类中的被重写方法的异常一致,或者是父类抛出异常的子类,不能比父类的异常范围更宽泛。对于异常的概念我们放在后面章节中详细解释。
  4. 访问权限不能更低:子类重写方法的访问权限不能低于父类方法的访问权限。如果父类方法的访问权限是protected,那么子类方法的访问权限也必须是protected或更宽松的访问权限。
  5. private方法不能被重写:如果父类的方法被声明为private,那么子类不能对其进行重写。即使子类定义了同名的方法,也只是相当于定义了一个子类的新方法,与父类方法无关。

方法重载(Overload)

方法重载其实我们也接触过一种了,我们在学习类和对象的时候也了解了构造函数的概念,构造函数是一种特殊的函数,我们当时在类中声明了有参的构造函数和无参的构造函数,其实那也是一种方法重载的实现。

定义

方法重载是指在一个类中定义了多个同名的方法,但它们具有不同的参数列表。不同的参数列表可以是参数个数、参数类型或参数顺序上。虽然方法名相同,但是在方法的调用的时候根据参数去决定调用哪个函数。

规则
  1. 方法名必须相同:重载的方法必须具有相同的名称。
  2. 参数列表必须不同:重载方法的参数列表必须不同,这包括参数个数、参数类型或参数顺序的不同。
  3. 与返回类型无关:重载方法的返回类型可以相同也可以不同,方法的重载不是通过返回类型来区分的。
  4. 与访问权限和异常类型无关:重载方法的访问权限和抛出的异常类型与重载无关。
样例
class TestOverload {  //两个参数的add方法public int add(int a, int b) {  return a + b;  }  //三个参数的add方法public int add(int a, int b, int c) {  return a + b + c;  }  //两个String类型参数的add方法public String add(String a, String b) {  return a + b;  }  public static void main(String[] args) {  TestOverload o = new TestOverload();  //下面根据参数传递去调用不通的方法。int result1 = o.add(10, 20); // 调用两个参数的add方法  System.out.println(result1); // 输出 30  int result2 = o.add(10, 20, 30); // 调用三个参数的add方法  System.out.println(result2); // 输出 60  String result3 = o.add("10", "20"); // 调用字符串拼接的add方法  System.out.println(result3); // 输出 1020  }  
}

总结

我们总结一下重写和重载的区别,很多的面试题中会提到这类的问题

1、重写是子类对父类方法的重新实现,而重载是在同一个类中定义多个同名但参数不同的方法。2、重写发生在子类与父类之间,而重载发生在同一个类中

相关文章:

Java小白入门到实战应用教程-重写和重载

引言 在上一节中我们学习了面向对象中的继承,然后在那一节中我们提到了一个知识点叫做:重写。 通过上节的代码样例我们也观察到了,重写是发生在子类和父类的这种继承关系中。 继承的特点就是提取所有子类共有的属性和方法,但是…...

微力同步如何安装使用并使用内网穿透配置公网地址远程访问

文章目录 1.前言2. 微力同步网站搭建2.1 微力同步下载和安装2.2 微力同步网页测试2.3 内网穿透工具安装 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1.前言 私有云盘作为云存储概念的延伸,虽然谈不上多么新颖,但是其广…...

nginx负载聚能

一、负载均衡 早期的网站流量和业务功能都比较简单,单台服务器足以满足基本的需求, 但是随着互联网的发展,业务流量越来越大并且业务逻辑也跟着越来越复 杂,单台服务器的性能及单点故障问题就凸显出来了,因此需要多台服…...

Python进阶 JSON数据,pyecharts制图

目录 json数据格式的转换 什么是json json本质 注意 pyecharts快速入门 画一个最简单的折线图 使用全局配置选项优化折线图 总结 json数据格式的转换 什么是json 一种轻量级的数据交换格式,可以按json指定的格式去组织和封装数据 json本质 带有特定格式的…...

polyglot,一个有趣的 Python 库!

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个有趣的 Python 库 - polyglot。 Github地址:https://github.com/aboSamoor/polyglot 在处理多语言文本时,解析和翻译不同语言的文本数据是一个常见…...

4.3.语言模型

语言模型 ​ 假设长度为 T T T的文本序列中的词元依次为 x 1 , x 2 , ⋯ , x T x_1,x_2,\cdots,x_T x1​,x2​,⋯,xT​。 于是, x T x_T xT​( 1 ≤ t ≤ T 1\le t\le T 1≤t≤T) 可以被认为是文本序列在时间步 t t t处的观测或标签。 在给定这样的文本…...

(学习总结10)C++类和对象1

C类和对象1 一、类的定义1.类定义格式2.访问限定符3. 类域 二、实例化1.实例化概念2.对象大小 三、this指针四、C和C语言实现Stack对比 以下代码环境在 VS2022。 一、类的定义 1.类定义格式 class 为定义类的关键字,Stack 为类的名字, { } 中为类的主体…...

进击大数据系列(一):Hadoop 基本概念与生态介绍

进击大数据系列(一):Hadoop 基本概念与生态介绍-腾讯云开发者社区-腾讯云 Hadoop 简介-CSDN博客 hadoop-common-3.2.1.jar hadoop-mapreduce-client-core-3.2.1.jar hadoop-hdfs-3.2.1.jar hadoop-core 依赖之间关系...

评价类算法--模糊综合评价算法模型

一.概述 二.经典集合和模糊集合的基本概念 经常采用向量表示法来进行表示 三.隶属函数的三种确定方法 其中,梯形分布用得最多 四.应用:模糊综合评价 对应一个指定的评语: 选择一个方案:...

哪些系统需要按照等保2.0进行定级?

等保2.0适用的系统类型 根据等保2.0的要求,需要进行定级的系统主要包括但不限于以下几类: 基础信息网络:包括互联网、内部网络、虚拟专用网络等。云计算平台/系统:涵盖公有云、私有云、混合云等多种部署模式的云服务平台。大数据…...

自注意力和位置编码

一、自注意力 1、给定一个由词元组成的输入序列x1,…,xn, 其中任意xi∈R^d(1≤i≤n)。 该序列的自注意力输出为一个长度相同的序列 y1,…,yn,其中: 2、自注意力池化层将xi当作key,value,query来…...

“文件夹提示无法访问?高效数据恢复策略全解析“

一、现象解析:文件夹为何提示无法访问? 在日常使用电脑的过程中,不少用户可能会突然遇到文件夹提示“无法访问”的尴尬情况。这一提示不仅阻断了对重要文件的即时访问,还可能预示着数据丢失的风险。造成这一现象的原因多种多样&a…...

结构开发笔记(一):外壳IP防水等级与IP防水铝壳体初步选型

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/140928101 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…...

WPF Datagrid控件,获取某一个单元格中的控件

在WPF应用程序中,比如需要获取特定 DataGrid 单元格中的 TextBlock 控件,可以通过访问 DataGridRow 和 DataGridCell 对象。以下是一个例子,展示如何获取 DataGrid 的第二行第一列中的 TextBlock 控件,并修改其属性。 1. 在XAML中…...

P10838 『FLA - I』庭中有奇树

前言 本题解较为基础,推导如何得出二分解题思路。 题目大意 给出无根带权树,双方采取最佳策略,求节点S->T的最短路。 有两种操作: 我方至多可以使用一次传送,花费k元从a传送到b(ab不能相邻&#xf…...

WebRTC简介

WebRTC简介 WebRTC(Web Real-Time Communication)是一项开源的实时通信技术,它允许网页浏览器进行实时语音、视频和数据共享通信,而无需安装额外的插件或应用程序。WebRTC的出现极大地简化了实时通信的开发和部署过程&#xff0c…...

一套直播系统带商城源码 附搭建教程

本站没搭建测试过,有兴趣的自己折腾了,内含教程! 功能介绍: 礼物系统:普通礼物、豪华礼物、热门礼物、守护礼物、幸运礼物 提现方式:统一平台提现日期及方式,方便用户执行充值提现操作 连麦…...

Netty 总结与补充(十)

简单介绍一下 Netty?你为什么会用到Netty?说说你对Netty的认识?为什么选用Netty来做通信框架? Netty 是一个高性能、异步事件驱动的 NIO 框架,它提供了对 TCP、UDP 和文件传输的支持,作为一个异步 NIO 框架…...

循环实现异步变同步的问题

一、背景 在开发中遇到在循环中调用异步接口的问题,导致页面渲染完成时,没有展示接口返回后拼接的数组数据。二、问题 在代码中使用了map进行循环,导致调用接口的时候处于异步。this.form.list.map(async el>{el.fileList [];if(el.pic…...

测试GPT4o分析巴黎奥运会奖牌数据

使用GPT4o快速调用python代码,生成数据图表 测试GPT4o分析巴黎奥运会奖牌数据 测试GPT4o分析巴黎奥运会奖牌数据 1.首先我们让他给我们生成下当前奥运奖牌数 2.然后我们直接让GPT帮我们运行python代码,并生成奥运会奖牌图表 3.我们还可以让他帮我们…...

TF卡(SD NAND)参考设计和使用提示

目录 电路设计 Layout 设计说明 贴片注意事项 电路设计 1、参考电路: R1~R5 (10K-100 kΩ)是上拉电阻,当SD NAND处于高阻抗模式时,保护CMD和DAT线免受总线浮动。 即使主机使用SD NAND SD模式下的1位模式,主机也应通过上拉电…...

电源芯片负载调整率测试方法、原理以及自动化测试的优势-纳米软件

在芯片设计研发领域,负载调整率作为稳压电源芯片的关键性能指标,直接关系到芯片的稳定性和可靠性,因此其测试和优化显得尤为重要。以下是对负载调整率测试原理、方法以及使用ATECLOUD-IC芯片测试系统优势的进一步阐述: 负载调整率…...

C++威力强大的助手 --- const

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏: C之旅 const是个奇妙且非比寻常的东西,博主从《Effective C》一书中认识到关于const更深层次的理解,写此博客进行巩固。 &#x…...

测试环境搭建整套大数据系统(十八:ubuntu镜像源进行更新)

镜像源更新为清华源 报错显示 解决方案 做好备份 cp /etc/apt/sources.list /etc/apt/sources.list.bak查看配置信息 sudo vim /etc/apt/sources.listsudo sed -i s/cn.archive.ubuntu.com/mirrors.aliyun.com/g /etc/apt/sources.list sudo apt update...

第128天:内网安全-横向移动IPCATSC 命令Impacket 套件CS 插件全自动

环境部署 案例一: 域横向移动-IPC-命令版-at&schtasks 首先是通过外网web访问到win2008,获得了win2008的权限,这一步不做演示 因为里面的主机都不出网,所以只能利用win2008进行正向或者反向连接 信息收集 域内用户信息&…...

记录一次学习过程(msf、cs的使用、横向渗透等等)

目录 用python搭建一个简单的web服务器 代码解释 MSF msfvenom 功能 用途 查看payloads列表 msfconsole 功能 用途 msfvenom和msfconsole配合使用 来个例子 msf会话中用到的一些命令 在windows中net user用法 列出所有用户账户 显示单个用户账户信息 创建用户账…...

C#中DataTable新增列、删除列、更改列名、交换列位置

C#中DataTable新增列、删除列、更改列名、交换列位置 一、新增列 1.1、新增列 /*新增列*/ dataTable.Columns.Add("列名称", Type.GetType("数据类型")); /*比如添加【name】列,string类型的内容*/ dataTable.Columns.Add("name&…...

C#编写多导联扫描式的波形图Demo

本代码调用ZedGraph绘图框架,自己先安装好ZedGraph环境,然后拖一个zedGraphControl控件就行了,直接黏贴下面代码 基本代码显示 using System; using System.Windows.Forms; using ZedGraph; using System.Timers;namespace ECGPlot {public…...

QT网络编程

Qt 给用户提供了网络编程的接口,包括TCP、UDP、HTTP三种协议的API以及各种类,可以了解一下。 而在 QT 中想要使用网络编程,必须在pro文件中添加 network 模块,否则无法包含网络编程所需的头文件。 UDP UDP是传输层的协议&#…...

Django ASGI服务

1. ASGI简介 在Django中, ASGI(Asynchronous Server Gateway Interface)的引入使得Django应用能够支持异步编程. 从Django 3.0开始, Django就增加了对ASGI的支持, 但直到Django 3.1才正式推荐在生产环境中使用ASGI. ASGI是一个用于Python的异步Web服务器的标准接口, 它允许你运…...