overwrite java_Java中的Override, Overload和Overwrite
中文翻译分别是覆盖,重载和重写
Override 和 Overwrite
实际上覆盖(Override)和重写(Overwrite)是对同一概念的不同称呼。
重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写
Java中,需要重写(覆盖)父类中的方法,或者实现接口中的方法,可以用@Override标注这是一个此方法重写了(覆盖)父类/接口中的方法。
Overload
重载(Overload)是让类以统一的方式处理不同类型数据的一种手段,实质表现就是多个具有不同的参数个数或者类型的同名函数,具体解释见下面代码。
示例代码
/**
* @author jimyoung
*/
class A {
char i = 'a';
public void fun(int a) {
System.out.println("调用A.fun(int a)");
}
public void fun(int a, int b) {
System.out.println("调用A.fun(int a, int b)");
}
}
class B extends A {
char i = 'b';
/**
* 此方法是A.fun(int a, int b)的一个重写/覆盖(Override/Overwrite)
*/
@Override
public void fun(int a, int b) {
System.out.println("调用B.fun(int a, int b)");
}
/**
* 此方法是B.fun(int a, int b)的一个重载(Overload)
* 重载要求方法名相同,参数不同(包括参数个数,参数类型,参数顺序,任一不同即可)
* void fun(double i, int j) 和 void fun(int j, double i)也构成重载关系
* 重载对返回结果不作要求,因为无法在调用的时候通过返回结果来明确调用的是哪个函数
*/
public void fun(int a, int b, int c) {
System.out.println("调用B.fun(int a, int b, int c)");
}
public static void main(String[] args) {
A a = new B();
B b = new B();
b.fun(1);
b.fun(1, 1);
b.fun(1, 1, 1);
a.fun(1);
a.fun(1, 1);
/**
* 子类不能覆盖父类的属性
*/
System.out.println(a.i);
System.out.println(b.i);
/**
* 无法进行下方这样的调用,因为父类引用不能访问子类中独有的方法
* 如果子类对父类方法进行了重写,那么访问的是子类中的方法,参考a.fun(1, 1);的执行结果(多态的体现)
*/
//a.fun(1, 1, 1);
}
}
输出结果
调用A.fun(int a)
调用B.fun(int a, int b)
调用B.fun(int a, int b, int c)
调用A.fun(int a)
调用B.fun(int a, int b)
a
b
overwrite java_Java中的Override, Overload和Overwrite相关推荐
- java 中的override overload 比较
java 中的override & overload 比较 很久没看Java,忘记override和overload的区别了.百度了一下,把一个小弟的文章抄下来,备用. 方法的重写(Overi ...
- overwrite java_java中,到底overwrite和override有什么区别?
展开全部 Override,Overload,Overwrite的区别 首先: Override是方法的覆盖 overload是方法的重载 Overwrite是方法的重写 一,方法的覆盖(Overri ...
- overwrite java_java中的重写override或overwrite
java中的重写override或overwrite TestOverWrite.java ? class="java">class Person { private Str ...
- overwrite java_java中的overwrite怎么用?最好是有代码的
可以的,有一种叫 JAD.exe的文件,你下载后放到JDK中的bin目录中,然后在命令行和运行比如javac,java等方法一样,具体参数有: -a - generate JVM inst ...
- C++中override overload overwrite
C++中override overload overwrite 1. overload(重载)(不是多态) 重载:是指同一可访问区内被声明的几个具有不同的参数列(参数类型.参数个数.顺序不同)的同名函 ...
- 重写(OverWrite)和重载(Overload)的区别
重写(OverWrite)和重载(Overload)的区别 重写(OverWrite) 重写的定义 发生时期 重载(Overload) 重载的定义 发生时期 总结 重写(OverWrite) 重写的定 ...
- Java中重载(overload)和重写(override)
了解了C++中重载(overload)和重写(override)和隐藏,需要注意的是,java中也有重载和重写,有一些区别: 1.重载 java的重载是可以在父类和子类中实现的,而C++中的重载是指在 ...
- java中的@Override是否需要
java中的重载注解 @Override 是否需要?今天被人问到这个问题,回答的不太好,下来看了一下源码 /*** Annotation type used to mark methods that ...
- C++中的override关键字
文章目录 1 C++中的override关键字 1 C++中的override关键字 作用: 提示程序的阅读者,这个函数是重写父类的功能. 防止程序员在重写父类的函数时,把函数名写错. #includ ...
最新文章
- 用master-worker模型比对团队管理
- 多线程编程有什么用途_为什么建议你一定要学懂C++
- PowerDesigner pdm生成Access的方法
- MTK 驱动(51)---TP 驱动移植
- 超人气光棍节!现在时间虽然不是2011年11月11日11点11分11秒11毫秒11微秒11纳秒11皮秒11飞秒11阿秒11渺秒11......
- python简单计算器下载安装到手机_python计算器app下载
- Microsoft Visual Studio--- 未能加载文件 %CommonDir%\dte90a.olb。未能找到该文件,因此解决此问题的尝试,请重新安装此程序。
- 一种基于深度神经网络的临床记录ICD自动编码方法
- Unity 自定义standard shader
- 360的服务器在哪个文件夹,360rec是什么文件夹?可以删除吗?
- Ubuntu用C/C++在终端打印不同颜色的字体
- 网站增加百度收录最有效的方法!!!!!!
- web前端简单静态网页制作
- node.js使用手册_权威的Node.js手册
- git操作后的各种后悔情况解决
- 汇编语言的基础知识一
- 凸多边形最小面积包围矩形
- 计算机投影维修维护,投影机维修常见故障解决方法
- 2021年高处安装、维护、拆除考试内容及高处安装、维护、拆除考试试题
- 看流行韩剧 简单学韩语