Java重写

方法重写的意义

在java中,子类可以继承父类中的方法,而不需要重新编写相同的方法,但是有时子类并不想原封不动的继承父类方法,需要做一定的修改,这时候就需要使用方法重写

方法重写的定义

  1. 在继承的前提下

  2. 子类可以根据父类中继承的方法进行改写,也称为方法的重置/覆盖。

  3. 在程序执行时,子类的方法将覆盖父类的方法

方法重写的要求

  1. 子类重写的方法必须和父类被重写的方法具有相同的方法名称、参数列表

  2. 子类重写的方法的返回值类型不能大于父类被重写的方法返回值类型

    • 父类被重写的方法的返回值类型是void,则子类重写的方法返回值只能是void
    • 父类被重写的方法的返回值类型是A类型,则子类重写的方法返回值类型可以是A类或A类的子类
    • 父类被重写的方法的返回值类型是基本数据类型,则子类重写的方法的返回值类型必须是相同的
  3. 子类重写的方法使用的访问权限不能小于父类被重写的方法的访问权限

    • 如果父类为private,子类不能重写
    • 如果父类为protected,子类不能是private
    • 如果父类为public,子类不能是private和protected
  4. 子类不能重写父类中声明的private权限的方法

  5. 子类方法抛出的异常不能大于父类被重写方法的异常

注意事项:

  • 子类与父类中同名同参数的方法必须同时声明为非static的,这样称作重写

  • 子类与父类中同名同参数的方法为static的不是重写,因为static方法是属于类的,子类无法覆盖父类的方法

重写中访问权限问题

问题1:

class Car{int speed;public void show() {System.out.println("小车");}//普通车速最高200码,我现在不想给外部看到private void Addspeed(int speed) {for(this.speed=speed;speed<=200;speed+=10) {this.speed=speed;System.out.println(this.speed);}}
}
class Bwm extends Car{public void show() {System.out.println("宝马");}//重写父类的方法--实际不是重写private void Addspeed(int speed) {for(this.speed=speed;speed<=400;speed+=20) {this.speed=speed;System.out.println(this.speed);}}
}

其实这个不是重写

ClassLoader会生成子类和父类的类模板,子类找不到的方法会在父类中去找,而父类设置了私有的方法,子类就没办法访问,这个时候子类定义的这个方法就不是重写了,而是一个新方法

所以子类重写父类的那个需要被重写的方法必须保证子类可以访问父类的被重写方法

问题2:

class Car{int speed;public void show() {System.out.println("小车");}//普通车速最高200码,我现在不想给外部看到 ps:请不要挑车速的毛病,看问题protected void Addspeed(int speed) {for(this.speed=speed;speed<=200;speed+=10) {this.speed=speed;System.out.println(this.speed);}}public void method() {Addspeed(speed);}
}
class Bwm extends Car{public void show() {System.out.println("宝马");}//那宝马的车速是比普通的车速快,我就想重写这个加速的方法public void Addspeed(int speed) {//public比protected访问权限大,反过来就会报错for(this.speed=speed;speed<=400;speed+=20) {this.speed=speed;System.out.println(this.speed);}}
}

实际的继承关系:
是Student可以访问父类的资源,而不是复制

https://img-blog.csdnimg.cn/20210714113953929.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5MDUyMzM5,size_16,color_FFFFFF,t_70
对比重载参考:Java重载

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

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

相关文章

UI面试手册

UI面试手册 薪资&#xff1a;6~9k 高级&#xff1a;8~15k 岗位职责&#xff1a; 负责公司品牌形象及产品相关海报、宣传画等创意设计工作;负责公司日常宣传、营销广告、策划设计制作、产品设计和包装设计等工作&#xff1b;配合国内外广告投放物料设计&#xff0c;按进度要求…

Python使用连接池操作MySQL

测试环境说明&#xff1a;Python版本是 3.8.10 &#xff0c;DBUtils版本是3.1.0 &#xff0c;pymysql版本是1.0.3 首先安装指定版本的连接池库DBUtils 、还有pymysql pip install DBUtils3.1.0 pip install pymysql1.0.3创建文件 sqlConfig.py # sqlConfig.pyimport pymysql…

Math类

类 Math 包含执行基本数值运算的方法&#xff0c;例如基本指数、对数、平方根和三角函数。下面是我写代码时用到的一些字段和方法&#xff0c;归纳如下。 字段 修饰符和类型 Field描述static final double Edouble 值比任何其他值都更接近e, 自然对数的底…

YOLOv10论文解读:实时端到端的目标检测模型

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

618购物节快递量激增,EasyCVR视频智能分析助力快递网点智能升级

随着网络618购物节的到来&#xff0c;物流仓储与快递行业也迎来业务量暴增的情况。驿站网点和快递门店作为物流体系的重要组成部分&#xff0c;其安全性和运营效率日益受到关注。为了提升这些场所的安全防范能力和服务水平&#xff0c;实施视频智能监控方案显得尤为重要。 一、…

蓝桥杯嵌入式国赛笔记(2):拓展板按键程序设计

目录 1、前言 2、电路原理 3、代码编写 3.1 读取Btn电压 3.2 检索按键 3.3 main文件编写 3.3.1 进行变量定义 3.3.2 AD_Key函数 3.3.3 LCD函数 3.3.4 main函数 3.3.5 完整代码 4、测试 5、总结 1、前言 本文进行拓展板按键程序设计&#xff0c;拓展板的按键是通…

人生苦短,我学python之数据类型(下)

个人主页&#xff1a;星纭-CSDN博客 系列文章专栏&#xff1a;Python 踏上取经路&#xff0c;比抵达灵山更重要&#xff01;一起努力一起进步&#xff01; 目录 一.集合 1.1子集与超集 1.2交集&#xff0c;并集&#xff0c;补集&#xff0c;差集 1.intersection(英文&a…

webman使用summernote富文本编辑器

前言 Summernote富文本编辑器功能强大&#xff0c;可以直接从word直接复制内容过来而不破坏原有的文档格式&#xff0c;非常适合做商品详情等内容的编辑工具。本文将展示如何在php高性能框架webman中使用summernote编辑器。 下载 去Bootstrap 中文网、Summernote、jQuery官网…

【设计模式】JAVA Design Patterns——Converter(转换器模式)

&#x1f50d;目的 转换器模式的目的是提供相应类型之间双向转换的通用方法&#xff0c;允许进行干净的实现&#xff0c;而类型之间无需相互了解。此外&#xff0c;Converter模式引入了双向集合映射&#xff0c;从而将样板代码减少到最少 &#x1f50d;解释 真实世界例子 在真实…

低代码开发:拖拽式可视化构建工业物联网系统

什么是低代码&#xff1f; 低代码(Low Code)是一种可视化的软件开发方法&#xff0c;通过最少的手动编码可以更快地交付应用程序。低代码平台的图形用户界面和拖放功能可自动执行开发过程的各个方面&#xff0c;从而消除对传统计算机编程方法的依赖。 什么是低代码平台&#…

Pandas 创建层次化索引

1.创建多层次索引 1.1 隐式构造 最常见的方法是给DataFrame构造函数的index参数传递两个或更多的数组 # 导入pandasimport numpy as npimport pandas as pd​data np.random.randint(0,100,size(6,6))​# 行索引index [ ["1班","1班","1班&qu…

如何合理设置Java线程池大小

如何合理设置Java线程池大小&#xff1a;依据任务类型定制策略 Java线程池的合理配置直接关系到系统性能和资源利用率。根据任务性质的不同&#xff0c;合理的线程池大小设置策略也有所区别&#xff0c;主要包括CPU密集型、IO密集型及混合型任务。 1. CPU密集型任务 特点&am…

【全网最全】2024电工杯数学建模B题53页成品论文+完整matlab代码+完整python代码+数据预处理+可视化结果等(后续会更新)

您的点赞收藏是我继续更新的最大动力&#xff01; 一定要点击如下的卡片链接&#xff0c;那是获取资料的入口&#xff01; 【全网最全】2024电工杯数学建模B题53页成品论文完整matlab、py代码19建模过程代码数据等&#xff08;后续会更新&#xff09;「首先来看看目前已有的资…

微软新功能Recall引发隐私担忧,英国数据监管机构展开调查

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

AP5163 是一款效率高,稳定可靠的 LED 灯恒流驱动控制芯片.

AP5163 特别内置了一个 LDO、其输出电压为 5V&#xff0c;最大可提供 5ma 电流输出。AP5163 采用小 SOT23-6 封装。特别适合宽输入电压范围的应用&#xff0c;其输入电压范围从 5.5V 到 36V。 AP5163 通过一个外接电阻设定输出电流&#xff0c;最大输出电流 3.5A。电流检测精度…

Vue小程序项目知识积累(一)

1.JS中的substring() 方法&#xff1a; substring() 方法用于提取字符串中介于两个指定下标之间的字符,包括空格键。 substring() 方法返回的子串包括 开始 处的字符&#xff0c;但不包括 结束 处的字符。 string.substring(from, to) from&#xff1a;必需。一个非负的整数…

头歌OpenGauss数据库-F.连接查询与子查询第3关:IN、ANY、ALL嵌套子查询

编程要求 我们为你提供了如下数据表&#xff1a; tb_salary表数据&#xff1a; idpositionsalary1Java80002Java84003Java90004Python65005Python10000 根据提供的数据&#xff0c;在右侧编辑器中补充代码&#xff1a; 查询薪资表中比Java最高工资高的所有员工职位名称和薪资&a…

[Spring Cloud] (9)XSS拦截器

文章目录 简述本文涉及代码已开源Fir Cloud 完整项目防XSS攻击必要性&#xff1a;作用&#xff1a; 整体效果后端增加拦截器开关配置pom中增加jsoup依赖添加JSON处理工具类添加xss拦截工具类防XSS-请求拦截器 前端 简述 本文涉及代码已开源 本文网关gateway&#xff0c;微服务…

微调LLM的理由

原文链接&#xff1a;https://www.freddyboulton.com/blog/when-to-finetune?continueFlag03133d546a002fc4ba73dda1632eeebe 考虑到大语言模型(llama 70b, mixtral, claude...)的能力在不断的增强的情况下&#xff0c;微调是否仍然是值得做的事。 下面是值得微调的一些原因…

医疗大模型和数据集整理

医疗大模型整理 LLM 类型 基座模型 持续预训练/Finetune 评估 ClinicalGPT 论文 BLOOM-7B cMedQA2, cMedQA-KG, MD-EHR, MEDQA-MCMLE, and MedDialog MedDialog MEDQA-MCMLE MD-HER cMedQA2 HuatuoGPT 论文+开源项目 Baichuan-7B Ziya-LLaMA-13B-Pretrain-v1 Distilled Instru…