很多同学对于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重载与覆写的更多相关文章

  1. 【转】 Java多态特性:重载和覆写的比较

    Java重载: 在同一个类中 方法具有相同的名字,相同或不同的返回值,但参数不同的多个方法(参数个数或参数类型) public class MethoDemo{ public static void ...

  2. Java多态特性:重载和覆写的比較

    Java重载: 在同一个类中 方法具有同样的名字,同样或不同的返回值,但參数不同的多个方法(參数个数或參数类型) public class MethoDemo{ public static void ...

  3. C#类的继承,方法的重载和覆写

    在网易云课堂上看到唐大仕老师讲解的关于类的继承.方法的重载和覆写的一段代码,注释比较详细,在此记下以加深理解. 小总结: 1.类的继承:允许的实例化方式:Student t=new Student() ...

  4. 菜鸡的Java笔记 第二十 - java 方法的覆写

    1.方法的覆写    当子类定义了与父类中的完全一样的方法时(方法名称,参数类型以及个数,返回值类型)这样的操作就称为方法的覆写    范例:观察方法的覆写 class A{ public void ...

  5. JAVA继承与覆写

    实例:数组操作 首先是开发一个整型数组父类,要求从外部控制数组长度,并实现保存数据以及输出.然后子类中实现排序和反转. 基础父类代码如下: class Array { private int data ...

  6. [改善Java代码]不要覆写静态方法

    建议33: 不要覆写静态方法 我们知道在Java中可以通过覆写(Override)来增强或减弱父类的方法和行为,但覆写是针对非静态方法(也叫做实例方法,只有生成实例才能调用的方法)的,不能针对静态方法 ...

  7. [改善Java代码]推荐覆写toString方法

    建议49: 推荐覆写toString方法 为什么要覆写toString方法,这个问题很简单,因为Java提供的默认toString方法不友好,打印出来看不懂,不覆写不行,看这样一段代码: public ...

  8. c++重载与覆写

    重载:指子类改写了父类的方法,覆写:指同一个函数,同样的参数列表,同样的返回值的,但是函数内部的实现过程不同. 重载: 1.方法名必须相同. 2.参数列表必须不相同,与参数列表的顺序无关. 3.返回值 ...

  9. java继承与覆写小练习

    最近学习java到了继承的部分,写个小程序用以巩固. import java.util.Scanner;//导入输入包public class testfather { public static v ...

随机推荐

  1. Node.js学习笔记——Node.js开发Web后台服务

    一.简介 Node.js 是一个基于Google Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效.Node.j ...

  2. BPM配置故事之案例14-数据字典与数据联动

    小明遇到了点麻烦,他昨天又收到了行政主管发来的邮件,要求把出差申请单改由H3 BPM进行,表单如下 行政主管的出差申请表 小明对表单进行了调整,设计出了一份适合在系统中使用的表单,但在"出差 ...

  3. JAVA的内存模型(变量的同步)

    一个线程中变量的修改可能不会立即对其他线程可见,事实上也许永远不可见. 在代码一中,如果一个线程调用了MyClass.loop(),将来的某个时间点,另一个线程调用了MyClass.setValue( ...

  4. Android之使用文件进行IPC

    一.文件进行IPC介绍 共享文件也是一种不错的进程间通信方式,两个进程通过读/写同一个文件来交换数据.在Windows上,一个文件如果被加了排斥锁将会导致其他线程无法对其进行访问,包括读写,而由于An ...

  5. Java实现FTP文件与文件夹的上传和下载

    Java实现FTP文件与文件夹的上传和下载 FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议".用于Internet上的控制 ...

  6. 二叉树的创建和遍历(C版和java版)

    以这颗树为例:#表示空节点前序遍历(根->左->右)为:ABD##E##C#F## 中序遍历(左->根->右)为:#D#B#E#A#C#F# 后序遍历(左->右-> ...

  7. 解除win7网络限速.

    在电脑刚买或者系统重装了的时候,win7系统会默认限制20%的网络速度,限制了我们的上网速度,我们可以解决这个限制,让上网变得更快 下面是操作步骤 1.开始>运行 2.输入以下命令,然后确定 g ...

  8. 我想立刻辞职,然后闭关学习编程语言,我给自己3个月时间学习C语言!这样行的通吗

    文章背景,回答提问:我想立刻辞职,然后闭关学习编程语言,我给自己3个月时间学习C语言!这样行的通吗? 我的建议是这样:1. 不要辞职.首先说,你对整个开发没有一个简单的了解,或一个系统的入门学习.换句 ...

  9. 【流量劫持】沉默中的狂怒 —— Cookie 大喷发

    精简版:http://www.cnblogs.com/index-html/p/mitm-cookie-crack.html 前言 上一篇文章 讲解了如何借助前端技术,打造一个比 SSLStrip 更 ...

  10. Entity Framework 6 Recipes 2nd Edition(9-3)译->找出Web API中发生了什么变化

    9-3. 找出Web API中发生了什么变化 问题 想通过基于REST的Web API服务对数据库进行插入,删除和修改对象图,而不必为每个实体类编写单独的更新方法. 此外, 用EF6的Code Fri ...