java重载与覆写
很多同学对于overload和override傻傻分不清楚,建议不要死记硬背概念性的知识,要理解着去记忆。

先给出我的定义:
overload(重载):在同一类或者有着继承关系的类中,一组名称相同,参数不同的方法组。本质是对不同方法的称呼。
override(覆写):存在继承关系的两个类之间,在子类中重新定义了父类中存在的方法。本质是针对同一个方法,给出不同的实现。
我们先来看重载的例子:
public class OverloadParent{
public String getPerson(String name){
return “personA” + name;
}
public String getPerson(int age){
return “personB” ;
}
public String getPerson(String name,int age){
return “personC”;
}
public void getPerson(String name){
System.out.println(“我是重载的方法吗?”);
}
}
public class OverloadChildextends OverloadParent {
public void getPerson(double money){
Sytem.out.println(“我是重载的方法吗”);
}
}
注意观察:
(1)OverloadParent中有4个名字相同的方法
(2)前三个方法的参数类型和个数不一致,返回值一致,构成重载
(3)方法4与方法1仅仅返回值不一样,不构成重载,编译器不通过。
ps:返回值是方法执行后的结果,我们在调用方法的时候不会指定说“我要调用返回值是xxx类型的方法”,它不成成为方法重载的特征。
(4)OverloadParent继承了Demo,Demo中拥有的方法,它都拥有了。它觉得现有的方法满足不了需求,索性重载了一个。
重载的标志:方法名相同,参数不同(个数或者类型),与返回值无关。
再来看一个覆写的例子:
public class OverrideParent{
public void fly(){
System.out.println(“Ican fly!”);
}
}
public class OverrideChild extends OverrideParent{
@override
public void fly(){
System.out.println(“Ican’t fly, but I can run!”);
}
public static vid main(String[] args){
OverwriteParent child= new OverwriteChild();
child.fly();
}
}
执行OverrideChild的main方法,会输出什么呢?
答案是:I can’tfly, but I can run!
我们看到:
(1)OverrideChild和OverrideParent都有一个fly方法
(2)fly的返回值和修饰符都一样,只有方法体不一样
(3)子类的fly方法前有一个@overwrite的注解,jdk1.5出现的,仅用于类的继承,1.6可用于接口实现。这个注解有助于编译器检查,不加也可以的。
覆写的标志:子承父类,对相同的方法有不同的实现。
应用场景
重载:当方法功能相似,但需要传递不同的参数。
覆写:子类有自己特有的行为,从父类继承而不能满足自身需要时。
ps:重载和覆写都是多态的表现。前者是编译器多态,后者是运行期多态。
关注老姜谈技术,微信号:helojava,或者扫描下面二维码。

每日一帖,技术鸡汤。
java重载与覆写的更多相关文章
- 【转】 Java多态特性:重载和覆写的比较
Java重载: 在同一个类中 方法具有相同的名字,相同或不同的返回值,但参数不同的多个方法(参数个数或参数类型) public class MethoDemo{ public static void ...
- Java多态特性:重载和覆写的比較
Java重载: 在同一个类中 方法具有同样的名字,同样或不同的返回值,但參数不同的多个方法(參数个数或參数类型) public class MethoDemo{ public static void ...
- C#类的继承,方法的重载和覆写
在网易云课堂上看到唐大仕老师讲解的关于类的继承.方法的重载和覆写的一段代码,注释比较详细,在此记下以加深理解. 小总结: 1.类的继承:允许的实例化方式:Student t=new Student() ...
- 菜鸡的Java笔记 第二十 - java 方法的覆写
1.方法的覆写 当子类定义了与父类中的完全一样的方法时(方法名称,参数类型以及个数,返回值类型)这样的操作就称为方法的覆写 范例:观察方法的覆写 class A{ public void ...
- JAVA继承与覆写
实例:数组操作 首先是开发一个整型数组父类,要求从外部控制数组长度,并实现保存数据以及输出.然后子类中实现排序和反转. 基础父类代码如下: class Array { private int data ...
- [改善Java代码]不要覆写静态方法
建议33: 不要覆写静态方法 我们知道在Java中可以通过覆写(Override)来增强或减弱父类的方法和行为,但覆写是针对非静态方法(也叫做实例方法,只有生成实例才能调用的方法)的,不能针对静态方法 ...
- [改善Java代码]推荐覆写toString方法
建议49: 推荐覆写toString方法 为什么要覆写toString方法,这个问题很简单,因为Java提供的默认toString方法不友好,打印出来看不懂,不覆写不行,看这样一段代码: public ...
- c++重载与覆写
重载:指子类改写了父类的方法,覆写:指同一个函数,同样的参数列表,同样的返回值的,但是函数内部的实现过程不同. 重载: 1.方法名必须相同. 2.参数列表必须不相同,与参数列表的顺序无关. 3.返回值 ...
- java继承与覆写小练习
最近学习java到了继承的部分,写个小程序用以巩固. import java.util.Scanner;//导入输入包public class testfather { public static v ...
随机推荐
- 从啥也不会到可以胜任最基本的JavaWeb工作,推荐给新人的学习路线(二)
在上一节中,主要阐述了JavaScript方面的学习路线.先列举一下我朋友的经历,他去过培训机构,说是4个月后月薪过万,虽然他现在还未达到这个指标. 培训机构一般的套路是这样:先教JavaSE,什么都 ...
- JavaScript基础知识总结(四)
JavaScript语法 八.函数 函数就是完成某个功能的一组语句,函数由关键字function + 函数名 + 加一组参数定义: 函数在定义后可以被重复调用,通常将常用的功能写成一个函数,利用函数可 ...
- mono for android 读取网络远程图片
布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=& ...
- 任意多边形切割/裁剪(附C#代码实现)
本实现主要参考了发表于2003年<软件学报>的<一个有效的多边形裁剪算法>(刘勇奎,高云,黄有群)这篇论文,所使用的理论与算法大都基于本文,对论文中部分阐述进行了详细解释,并提 ...
- Leetcode 笔记 117 - Populating Next Right Pointers in Each Node II
题目链接:Populating Next Right Pointers in Each Node II | LeetCode OJ Follow up for problem "Popula ...
- ABP源码分析十七:DTO 自动校验的实现
对传给Application service对象中的方法的DTO参数,ABP都会在方法真正执行前自动完成validation(根据标注到DTO对象中的validate规则). ABP是如何做到的? 思 ...
- stanford corenlp自定义切词类
stanford corenlp的中文切词有时不尽如意,那我们就需要实现一个自定义切词类,来完全满足我们的私人定制(加各种词典干预).上篇文章<IKAnalyzer>介绍了IKAnalyz ...
- jQuery +ajax +json+实现分页
正文 首先我们创建一般处理程序,来读取数据库中内容,得到返回值. 创建文件,GetData.ashx. 我这里是用的存储过程,存储过程会再下面粘出来,至于数据只是实例,你们可根据需求自行读取数据 代码 ...
- Android开发学习之路-Git的极简教程?
Git是一个代码版本管理工具,也就是允许我们的一个项目拥有多个版本,这样我们可以随心所欲的修改我们的代码,如果出现问题,可以回退到某一个提交点.如果你还在用一堆堆注释来更新你的代码,那么可以尝试一下G ...
- RabbitMQ简单测试