Java之重载与覆盖

gdb对dwarf调试信息的解析和使用 gdb的对dwarf的调试信息的解析到使用的过程分析 阅读详情

有的时候,类的同一种功能有多种实现方式,到底采用哪种实现方式,取决于调用者给定的参数。例如我们最常用的System.out.println()能够打印出任何数据类型的数据,它有多种实现方式。运行时,Java虚拟机先判断给定参数的类型,然后决定执行哪个println()方法(int char String等)。

 

重载(overload):对于类的方法(包括从父类中继承的方法),方法名相同,参数列表不同的方法之间就构成了重载关系。这里有两个问题需要注意:

(1)       什么叫参数列表?参数列表又叫参数签名,指三样东西:参数的类型,参数的个数,参数的顺序。这三者只要有一个不同就叫做参数列表不同。

(2)       重载关系只能发生在同一个类中吗?非也。这时候你要深刻理解继承,要知道一个子类所拥有的成员除了自己显式写出来的以外,还有父类遗传下来的。所以子类中的某个方法和父类中继承下来的方法也可以发生重载的关系。

大家在使用的时候要紧扣定义,看方法之间是否是重载关系,不用管方法的修饰符和返回类型以及抛出的异常,只看方法名和参数列表。而且要记住,构造器也可以重载。

 

覆盖 (override):也叫重写,就是在当父类中的某些方法不能满足要求时,子类中改写父类的方法。当父类中的方法被覆盖了后,除非用super关键字,否则就无法再调用父类中的方法了。

发生覆盖的条件:

1、“三同一不低” 子类和父类的方法名称,参数列表,返回类型必须完全相同,而且子类方法的访问修饰符的权限不能比父类低。

2、子类方法不能抛出比父类方法更多的异常。即子类方法所抛出的异常必须和父类方法所抛出的异常一致,或者是其子类,或者什么也不抛出;

3、被覆盖的方法不能是final类型的。因为final修饰的方法是无法覆盖的。

4、被覆盖的方法不能为private。否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。

5、被覆盖的方法不能为static。所以如果父类中的方法为静态的,而子类中的方法不是静态的,但是两个方法除了这一点外其他都满足覆盖条件,那么会发生编译错误。反之亦然。即使父类和子类中的方法都是静态的,并且满足覆盖条件,但是仍然不会发生覆盖,因为静态方法是在编译的时候把静态方法和类的引用类型进行匹配。

 

方法的覆盖和重载具有以下相同点:

都要求方法同名

都可以用于抽象方法和非抽象方法之间

 

方法的覆盖和重载具有以下不同点:

方法覆盖要求参数列表(参数签名)必须一致,而方法重载要求参数列表必须不一致。

方法覆盖要求返回类型必须一致,方法重载对此没有要求。

方法覆盖只能用于子类覆盖父类的方法,方法重载用于同一个类中的所有方法(包括从父类中继承而来的方法)

方法覆盖对方法的访问权限和抛出的异常有特殊的要求,而方法重载在这方面没有任何限制。

父类的一个方法只能被子类覆盖一次,而一个方法可以在所有的类中可以被重载多次。

 

另外,对于属性(成员变量)而言,是不能重载的,只能覆盖。



转自:

http://blog.youkuaiyun.com/lenotang/article/details/2681525

手把手教你学Simulink实例:基于Simulink的超级电容器充放电仿真 超级电容器(Supercapacitor)是一种高容量电容器,具有快速充放电能力、长寿命和高功率密度等优点。它在能量存储系统、电动汽车、不间断电源(UPS)等领域有广泛应用。为了更好地理解和设计超级电容器的应用系统,通常需要进行详细的仿真分析。Simulink 提供了一个强大的仿真环境,可以用来设计、分析和验证超级电容器充放电系统的控制策略。本教程将详细介绍如何使用 Simulink 进行超级电容器充放电的仿真实例。通过本教程,我们详细介绍了如何使用 Simulink 进行超级电容器充放电的仿真实例。 阅读详情

相关推荐

电网渗透之终端安全

        电力系统安全不仅关系到电网的稳定运行,也关系到国家能源安全和国计民生,甚至关系到国家的安全和利益,电力系统由于结构复杂多样、分布广泛、重要性高,一旦系统瘫痪影响巨大,因此,极容易成为敌对势力攻击的首选目标。随着信息安全暴露面迅速增加,将给公司网络安全防线带来严峻挑战。       监控、保障这些电力系统安全运行变的尤为重要。内部安全防护产品有防火墙、纵向加密、反向隔离设备等...

guapi007008的博客 2721

重载与覆盖

重载(overload) 重载发生在同一个类中,方法名相同,参数类型、个数、顺序不同;与返回值类型、访问修饰符(public,private等关键字)无关。 覆盖(override) 也叫重写、覆写 在继承关系中,方法名称与参数列表都一样。 注意事项:@override写在方法前面,用来检测是不是有效的正确覆盖重写。 代码实现: public class Fu{ public void method() { System.out.println ("这是父类方法");

youmou_的博客 1120

TLV320AIC3204音频CODEC硬件设计与调试实战

本文深入解析了TLV320AIC3204音频CODEC的硬件设计与调试实战。文章从芯片功能定位入手,详细阐述了电源时钟设计、模拟输入电路等关键硬件设计要点,并提供了软件驱动配置与分层调试方法,帮助工程师有效规避常见陷阱,解决底噪、失真等典型音频调试问题。

zero1的博客 1123

覆盖(override)和重载(overload)的区别

一. 重载(overload) 1. 重载指的是函数具有的不同的参数列表,而函数名相同的函数。重载要求参数列表必须不同,比如参数的类型不同、参数的个数不同、参数的顺序不同。 2. 如果仅仅是函数的返回值不同是没办法重载的,因为重载要求参数列表必须不同。 3. 程序是根据参数列表来确定具体要调用哪个函数的 4. 看下面几个例子 void Fun(int a); v

tkp2014的专栏 2633

ADS交叉耦合振荡器VCO相位噪声优化仿真实践

本文详细介绍了在ADS软件中搭建和优化交叉耦合VCO相位噪声的完整仿真实践。通过谐波平衡与瞬态仿真分析电路性能,并重点阐述了通过提升谐振腔Q值、优化晶体管工作点及改善尾电流源来有效降低相位噪声的具体方法,为射频电路设计提供了实用指南。

weixin_29235923的博客 633

在不同版本Python中安装PyQT5及PyQT5-Tools

在不同版本Python中安装PyQT5及PyQT5-Tools

zoomgu680的博客 2万+

方法覆盖和重载

Java的方法重载,就是在类中可以创建多个方法,它们可以有相同的名字,但必须具有不同的参数,即或者是参数的个数不同,或者是参数的类型不同。一、重载方法:方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。方法重写又称方法覆盖。覆盖方法:覆盖又称重写,在Java中,是子类可继承父类中的方法,而不需要重新编写相同的方法。重载方法:在Java中,有函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。

weixin_69620038的博客 1670

QGroundControl高级配置与自定义功能实战指南

本文深入探讨了QGroundControl(QGC)的高级配置与自定义功能,为无人机开发者、系统集成商和高级用户提供实战指南。内容涵盖从品牌界面定制、自定义MAVLink消息处理,到插件开发与自动化部署的全流程,旨在帮助用户解锁QGC的隐藏潜力,打造专属的行业解决方案。

weixin_29234509的博客 239

重载和覆盖

方法的重载(overload)和覆盖(override) 有的时候,类的同一种功能有多种实现方式,到底采用哪种实现方式,取决于调用者给定的参数。例如我们最常用的System.out.println()能够打印出任何数据类型的数据,它有多种实现方式。运行时,Java虚拟机先判断给定参数的类型,然后决定执行哪个println()方法。 重载(overload):对于类的方法(包括从父类

lenotang的专栏 1万+

金融行业软件测试面试题(含答案)

6、假如发现了一个BUG,跟开发本身没什么关系,涉及到理念,需求问题,如何解决?11、假如要你测试6个月期限的p2p借款产品,你应该怎么设计案例,说出测试点。17、如果京东有一个购物网页给你,你要怎么进行测试?31、我们公司自动化测试用的语言是Java,Java你不会,该怎么办?23、你们测试用的测试环境是谁给的?24、如果领导分配你的任务超出负荷,领导高估了你的能力,怎么办。26、给你一个模块测试,只有一个星期的时间你如何有效率地完成?29、如果你组长的用例写错了,但他认为是对的,你怎么处理?

crhnb的博客 916

基于YOLOv26的护栏损坏检测系统原理讲解

本文介绍了一种基于YOLOv26深度学习的护栏损坏检测系统。该系统通过车载摄像头或固定监控采集道路护栏图像,利用改进的YOLOv26算法实现高效准确的损坏检测。系统采用分层架构设计,包含数据采集、检测处理、分析评估和应用服务四个层次,能够自动识别变形、断裂、缺失等五种常见损坏类型,并评估损坏严重程度。相比传统人工检测方法,该系统大幅提高了检测效率和准确性,降低了人工成本和安全风险。关键技术包括多尺度特征融合、注意力机制和自适应非极大值抑制等创新设计,使系统在复杂道路环境下仍能保持稳定的检测性能。

一键难忘的博客 328

Java覆盖与重载

Java覆盖与重载

Weber's blog 1049

【100%通过率】华为od机试C卷【部门人力分配】Python 实现

当前部门需要完成 N 个需求,需求用 requirements[i] 表示,requirements[i] 表示第 i 个需求的工作量大小,单位:人月。2:明显这个人力需求值有上下限的情况下【下限为requirements中的最大值,上限为requirements中的最大两个值相加(因为最多有两个需求同一个月开发)】,可以考虑使用二分法。当选择人力为6时,2个需求量为3的工作可以在1个月里完成,其他2个工作各需要1个月完成。当选择人力为5时,4个工作各需要1个月完成,一共需要4个月才能完成所有需求。

MISAYAONE的博客 2020

java覆盖和重载_Java中覆盖和重载的区别

展开全部Java中覆盖和重载的区别如下:override 可以翻译为覆盖,从字面就可以知道,它是覆盖了一个方法32313133353236313431303231363533e58685e5aeb931333339666639并且对其重写,以求达到不同的作用。最熟悉的覆盖就是对接口方法的实现,在接口中一般只是对方法进行了声明,而在实现时,就需要实现接口声明的所有方法。除了这个典型的用法以外,在继承...

weixin_30832021的博客 522

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Java中覆盖、重写、重载详解

重载:通俗的讲就是方法名必须一致,dan

lavimer 2211

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

详解Java中重载和覆盖的区别

重载(overload)和覆盖(overide)是 Java 多态性的不同表现方式。 重载是在一个类中多态性的一种表现,是指在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型。 在使用重载时,需要注意以下几点: 1)重载是通过不同的方法参数来区分的,例如不同的参数个数、不同的参数类型或不同的参数顺序。 2)不能通过方法的访问权限、返回值类型和抛出的异常类型来进行重载。 3)对于继承来说,如果基类方法的访问权限为 privae,那么就不能在派生类对其重载;如果派生类也定义了一个同名的函数

qq_43547155的博客 7256

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

java方法的覆盖与重载_java方法的重载与覆盖

java方法的重载与覆盖java多态的2种表现形式 方法重载和方法覆盖方法重载:同一个类中,方法名相同,参数列表不同的2个或多个方法构成方法的重载。方法覆盖:子类重新实现了父类中的方法。方法重载/*** 方法重载满足的条件* 同一个类中,方法名相同,参数列表不同的2个或多个方法构成方法的重载* 参数列表不同指参数的类型,参数的个数,参数的顺序至少一项不同* 方法的返回值类型,方法的修饰符可以不同。...

weixin_32127359的博客 420

【java】2.5. 重载与覆盖

在 Java 中,方法的重载(Overloading)和覆盖(Overriding)是两个重要的概念。它们都涉及到方法的定义与使用,但作用和规则有所不同。

Andy0214的专栏 5964

Java方法的重载和方法的覆盖

特性方法重载 (Overloading)方法覆盖 (Overriding)发生位置同一个类中子类中(继承关系)参数要求参数列表必须不同参数列表必须相同返回类型可以不同必须相同(或协变)访问修饰符可以不同不能更严格绑定时间编译时(静态绑定)运行时(动态绑定)目的提供多个方法版本,适应不同参数改变继承方法的行为,实现多态示例场景工具类如和子类重写父类方法如toString()

2501_93605496的博客 1758

java 重载和覆盖_java — 重载和覆盖

重载(overload):对于类的方法,方法名相同,参数列表不同的方法之间构成了重载关系。参数列表:参数的类型、参数的个数、参数的顺序。子类从父类继承来的方法也可以发生重载。如果多个方法有相同的名字、不同的参数,便产生了重载。编译器必须挑选出具体执行哪个方法,通过各个方法给出的参数类型与特定的方法调用所使用的值类型进行匹配来挑选出相应的方法。如果找不到匹配的参数,或者有多个可能的匹配,就会产生编译...

weixin_42517137的博客 220

java中方法的重载和覆盖

java中方法的重载和覆盖 先来了解一下这两个名词的含义。 重载: 在一个类当中才可以重载,方法名相同,参数个数不同或参数个数相同而参数类型不同。 覆盖: 又称重写,在派生类(子类)中重写基类(父类)的方法,名称、参数、类型都必须相同。 java中的方法重载发生在同一个类里面两个或者多个方法的方法名相同但是参数不同的情况。与此相对,方法覆盖是说子类重新定义了父类的方法。方法覆...

sunfeiswag的博客 475

Java中重载和覆盖(重写)的区别

Java中重载和覆盖(重写)的区别 1,基本概念 重载(Overload) Java中的方法重载发生在同一个类里面两个或者多个方法的方法名相同但是参数不同的情况。 参数不同的情况: 1,参数个数不同 2,参数类型不同 3,参数类型排列顺序不同 覆盖(Override) 方法覆盖是说子类重新定义了父类的方法。方法覆盖必须有相同的方法名,参数列表和返回类型。 2,区别 方法重载(Overl...

偏偏爱吃梨的博客 2618

重载 覆盖 java,Java重载与覆盖

Hi I just want to make sure I have these concepts right. Overloading in java means that you can have a constructor or a method with different number of arguments or different data types. i.epublic vo...

weixin_30574361的博客 75

Java中的覆盖与重载详解

覆盖和重载是Java中两个非常重要的概念。它们使Java新手程序员感到困惑。这篇文章通过使用两个简单的示例来说明它们之间的差异。 1.定义 当一个类中的两个或多个方法具有相同的方法名称但参数不同时,就会发生重载。 覆盖表示具有相同方法名称和参数的两个方法(即方法签名)。一种方法在父类中,另一种在子类中。重写允许子类提供其父类已经提供的方法的特定实现。 2.覆盖与重载 以下是有关覆盖和重载的一些重要...

阿志同学 464

Java中方法的重载与方法的覆盖

文章目录Java中方法的重载(Overload)Java中方法的覆盖(Override) Java中方法的重载(Overload) 项目中,有时候为了使代码更加的优雅,方法名为了统一好记,可以使用Java的重载方法。 方法重载(Overload)的条件: 方法重载只出现在同一个类中 方法名称相同 方法参数列表不同(参数类型、个数、顺序至少有一个不同) 方法的返回类型可以不同,因为方法重载和返回类...

smilehappiness的博客 2713

java的方法覆盖与方法重载有什么异同_Java语言中方法重载与方法覆盖的异同

Java语言中方法重载与方法覆盖的异同导语:在Java语言的学习过程中,初学者经常分不清重载与覆盖,实际上,方法重载(Overload)和方法覆盖(Override,也叫重写)都是Java多态性的体现,只是形式不同,在此,笔者简单地谈一谈两者的异同。 下面就由小编为大家介绍一下Java语言中方法重载与方法覆盖的异同,欢迎大家阅读!1 方法重载与方法覆盖的特点1.1 方法重载的特点Java语言中的方...

weixin_42166105的博客 1183
上一篇: 异常处理
下一篇: Java之正则表达式
fsz521
博客等级 码龄16年 33粉丝 71原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值