Java之重载(Overload)与重写(Overwrite)总结
内容来源为:《孙卫琴面向对象编程》,本随笔简单总结,具体内容可参见概述第6章,写的挺清晰;
一. 重载(Overload)
1. 有时候类的同一种功能有多种实现方式,到底采用哪种实现方式,取决于调用者给定的参数(如构造函数就是一种例子);
2. 对于类的方法(包括从父类中继承的方法),如果有两个方法的方法名相同,但参数不一样,那么可以说,一个方法是另一个方法的重载方法。
3. 重载方法必须满足以下条件:
(1)方法名相同;
(2)方法的参数类型、个数、顺序至少有一项不同;
(3)方法的返回值类型可以不同;
(4)方法的修饰符可以不同;
4. 在一个类中不允许定义两个方法名相同,并且参数签名也完全相同的方法。因为假如存在这样的方法,Java虚拟机在运行时就无法决定到底执行哪个方法,参数签名是指参数的 类型、个数和顺序。
二. 重写(OverWrite)
1. 如果在子类中定义的一个方法,其名称、返回值类型及参数签名正好与父类中的某个方法的名称,返回值类型及参数名相匹配,那么可以说,子类的方法重写了(覆盖)父类的方法;
2. 重写方法必须满足以下约束条件:
(1)子类的方法的名称、参数签名和返回值类型必须与父类方法的名称、参数签名及返回值类型一致;
(2)子类在重写父类方法时,重写方法不能缩小父类方法的访问权限(原因是和多态机制冲突,详细内容可看《Java面向对象编程》);
(3)子类方法不能抛出比父类方法更多的异常;子类方法抛出的异常必须和父类方法抛出的异常相同,或者子类方法抛出的异常是父类方法抛出的异常的子类(原因是和多态机制冲突,详细内容可看《Java面向对象编程》);
(4)方法重写之存在于子类和父类之间(包括直接父类和间接父类),在同一个类中,方法只能重载不能重写。
(5)父类的静态方法不能被子类重写为非静态方法;
(6)子类可以定义与父类的静态方法同名的静态方法,以便在子类中隐藏父类中的静态方法;
(7)父类的非静态方法不能被子类重写为静态方法;
(8)父类中的私有方法不能被子类重写;原因:子类方法重写父类方法的前提是,子类必须能继承父类的特定方法,因此父类中的私有方法不能被子类继承,也就无法构成重写,即使在形式上符合重写的规范,也不能算得上重写;
(9)父类的抽象方法可以被子类通过两种方式重写,一是实现父类的抽象方法,二是重新声明父类的抽象方法。
(10)父类的非抽象方法可以被重写为抽象方法。
Java之重载(Overload)与重写(Overwrite)总结的更多相关文章
- 方法的覆盖(override)、重载(overload)和重写(overwrite)
body { background-color: white } .markdown-body { min-width: 200px; max-width: 760px; margin: 0 auto ...
- 【Java】重载(Overload)与重写(Override)
方法的语法 修饰符 返回值类型 方法名(参数类型 参数名){ ... 方法体 ... return 返回值; } 重载(overload) /** * 重载Overload: * 同一个类中,多个方法 ...
- Java面试 - 重载(Overload)和重写(Override)的区别?
1.重载是在同一个类中,可声明多个同名方法,但参数列表不同(参数顺序,个数,类型).而重写是在子类中,对从父类中继承的方法进行重新编写,但方法名,参数列表(参数顺序,个数,类型),返回值类型必须保持一 ...
- JAVA中继承时方法的重载(overload)与重写/覆写(override)
JAVA继承时方法的重载(overload)与重写/覆写(override) 重载-Override 函数的方法参数个数或类型不一致,称为方法的重载. 从含义上说,只要求参数的个数或参数的类型不一致就 ...
- C++ 重载(overload)、重写(overrride)、重定义(redefine)总结
引自:http://www.189works.com/article-42111-1.html 先来看几个概念: 重载(overload),重写(override,也称覆盖), 重定义(redefin ...
- Java方法多态性——方法的重载Overload和重写Override
方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式. 重写(Override) 重写是 ...
- Java 方法重载与方法重写
方法重载(Overload): 1.在同一个类中 2.方法名相同 3.参数的个数或类型不同 4.与方法的返回类型无关 5.与方法的修饰符无关 方法重写(Override): 方法重写必须是子类继承父类 ...
- 抽象方法(abstract method) 和 虚方法 (virtual method), 重载(overload) 和 重写(override)的区别于联系
1. 抽象方法 (abstract method) 在抽象类中,可以存在没有实现的方法,只是该方法必须声明为abstract抽象方法. 在继承此抽象类的类中,通过给方法加上override关键字来实现 ...
- java 方法重载overload
一.方法的重载 方法名一样,但参数不一样,这就是重载(overload). 所谓的参数不一样,主要有两点:第一是参数的个数不一样,第二是参数的类型不一样.只要这两方面有其中的一方面不一样就可以构成方法 ...
- Java 方法重载 (Overload)
对重载 (Overload) 的认识 为什么要用方法重载: 对于功能类似的方法来说,因为参数列表不一样,如果定义不同名称的方法,太麻烦且难以记忆. 为了解决这个问题,引入方法的重载. 重载的定义: 多 ...
随机推荐
- php redis 单例模式
单例模式思想其实很简单 首先 有一个实例的静态变量 构造方法和克隆方法设置为私有,防止外部直接new 提供一个获取实例的静态方法 代码如下: class Redis { private static ...
- Oracle物化视图的一般使用
普通视图和物化视图根本就不是一个东西,说区别都是硬拼到一起的,首先明白基本概念,普通视图是不存储任何数据的,他只有定义,在查询中是转换为对应的定义SQL去查询,而物化视图是将数据转换为一个表,实际存储 ...
- ScreenCapture-HDwik5.0整合教程
示例下载:http://yunpan.cn/Q9qzFmf6sF57z 1.上传ScreenCapture文件夹 2.上传upload.php文件 2.1修改upload.php路径 3.修改Scre ...
- oracle 11g 创建普通用户
CREATE USER xiaoming IDENTIFIED by xm123123 GRANT CREATE SESSION TO xiaoming; GRANT RESOURCE TO xiao ...
- jmeter 性能分析 (一点点加)
1.聚合报告 我们可以看到,通过这份报告我们就可以得到通常意义上性能测试所最关心的几个结果了. Samples -- 本次场景中一共完成了多少个Transaction Average -- 平均响应时 ...
- Appium之打开应用时提示框处理
当打开一个应用时,会有一个无关紧要的提示框,如果要继续操作,需要先关闭提示框,如下图(如新用户福利提示): 此时,如果你直接用Appium inspector或者Android uiautomator ...
- java程序无法启动:Unsupported major.minor version 51.0
今天在sae上部署了一个项目,结果总是出现503错误:service unavailable,然后jvm出现了一大串错误日志,如下 JAVA_SAE_Fatal_error: Failed start ...
- opengl教程推荐
非常不错的教程! OpenGL教程
- jenkins启动失败,提示Starting Jenkins Jenkins requires Java8 or later, but you are running 1.7.0
# 背景 centos安装jenkins后,先启动jenkins服务,结果报错如下: 但自己明明已经安装了java8的 # 解决方法 既然安装了java8的话,那么证明是jenkins启动的是还是用的 ...
- eayui js动态加载Datagrid,自适应宽度,高度
HTML: <div class="easyui-layout" style="min-height:100%;min-width:100%;"> ...