重载(Overloading)
  • 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现。
  • Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。
  • 重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。(method signature is the unique identifier of a method and signature does not contain return type)
重写(Overriding)
  • 父类与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某 方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。在Java中, 子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不 动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又 称方法覆盖。
  • 若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表, 则新方法将覆盖原有的方法。如需父类中原有的方法,可使用super关键字,该关键 字引用了当前类的父类
  • 子类函数的访问修饰权限不能少于父类的;

转自stackoverflow Overloading is having multiple methods in a single class where the method has the same name. However, the return value is not seen as part of the signature of the method. Thus, you cannot overload a method by changing only the return value. You cannot have the following code, from your example:

public void setValue() {   this.value= 0;
}
public int setValue() {   returnthis.value;
} 

This will fail to compile.

As Rob identified, I believe you mean overriding, and you have that correct. Note with overriding, you cannot change the return type. As of Java 5, you can return a derived type of what the base class method returned. Before Java 5, it must be the identical type. That is, you cannot do the below until Java 5 and later:

public class AnimalNoise{}
public class MiawextendsAnimalNoise{}public class Animal{public AnimalNoise makeNoise(){return newAnimalNoise();}
}public class Cat extends Animal{public Miaw makeNoise(){return newMiaw();}
}

However, even in Java 5 and later, you cannot do the following:

public class Animal{public String makeNoise(){return "silence";}
}public class Cat extends Animal{public Miaw makeNoise(){return new Miaw();}
}
public class Miaw{}

Finally, a big difference between overloading and overriding that is often overlooked is that overloading is decided at compile time and overriding is decided at runtime. This catches many people by surprise when they expect overloading to be decided at runtime.

overloading overriding相关推荐

  1. 第五周课程总结试验报告(三)

    实验三 String类的应用 实验目的 掌握类String类的使用: 学会使用JDK帮助文档: 实验内容 (1)已知字符串:"this is a test of java".按要求 ...

  2. java开发实战经典学习笔记第2部分

    18. 面向对象的三大特征:继承,封装,多态. 19. 多态分方法重载和对象多态. 20. 对象使用前必须实例化,堆栈内存空间的开辟(new关键字),一个栈内存只能指向一个堆内存. 21. 构造方法: ...

  3. java方法重载和重载方法_Java中的重载与重载

    java方法重载和重载方法 Overriding Vs Overloading In Java 在Java中覆盖vs重载 Overriding and Overloading are the core ...

  4. 小黑小波比.极客学院.android自学笔记

    1_第1阶段|环境搭建 2_第2阶段|Java基础 1_Java语言基础-计算机进制转换 1_计算机系统进制概述 概述: 1.数值是用一组固定的符号和同意的规则来表示数值的方法. 2.计算机底层使用的 ...

  5. 从零开始的软件构造复习[上篇]

    第一章 1.1 软件构造的多维度视图(Multi-dimensional software views) Build-time, moment, code-level 代码如何在逻辑上被组织为基本的程 ...

  6. 常见Java面试题 – 第三部分:重载(overloading)与重写(overriding)

    ImportNew注: 本文是ImportNew编译整理的Java面试题系列文章之一.你可以从这里查看全部的Java面试系列. 这篇文章介绍的常见面试题是关于重载(overloading)方法和重写( ...

  7. Java:Overriding与Overloading

    1.Overriding Overriding翻译过来是"重写/覆盖". 它是覆盖了一个方法并且对其重写,以求达到不同的作用.对我们来说最熟悉的覆盖就是对接口方法的实现,在接口中一 ...

  8. Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?

    java中的方法重载发生在同一个类里面两个或者多个方法的方法名相同但是参数不同的情况.与此相对,方法覆盖是说子类重新定义了父类的方法.方法覆盖必须有相同的方法名,参数列表和返回类型. 覆盖者可能不会限 ...

  9. Overloading And Overriding

    最近在技术分享的时候,说到了一个小点,重写和重载,顿时感觉自己基础忒差,于是拿出这两个词,再一次温习一下,总是区分不开,加上一直在学习java,所以就用java来写一些小例子. 重载(overload ...

最新文章

  1. MFC中的几个常用类——CWnd
  2. 12)登录验证函数简单编写验证
  3. Rxjs 里 subscribeToArray 工具函数的详细分析
  4. mysql恢复root用户_恢复MYSQL的root用户
  5. 关于验证码的DEMO
  6. 全局路径规划:图搜索算法介绍2(A star)
  7. CUDA中的复数定义、开内存空间以及运算
  8. 保护你的眼睛,把电脑屏幕由白色改为淡绿
  9. 开源GIS(四)——openlayers中geoserver发布的WMS与WFS加载
  10. arcgis字段计算器无法赋值_分享∣Arcgis中62个常用技巧系列一(前20个技巧)
  11. python进阶(一)关联sql的算法操作
  12. 智能优化算法(源码)-海鸥优化算法(SOA)
  13. [译]Vue 2.0的变化(一)之基本API变化
  14. 树莓派Raspberry Pi 4B
  15. 分治法解决赛程安排问题
  16. Linux磁盘的格式化
  17. FPGA的学习:基于ROM的VGA图像显示(弹跳特效)
  18. php 带逗号数字转换,php实现数字格式化,数字每三位加逗号的功能函数169856420=169,856,420...
  19. 机器学习笔记——逻辑斯蒂回归(Logistic)
  20. MapReduce任务卡在Running Job状态的多种解决方法

热门文章

  1. 大连东软暑假实习报告
  2. 注册商标申请提交材料
  3. selenium最大化窗口,刷新网页,及退出
  4. 【多线程与AfxGetMainWnd 窗口 与 线程 有必然联系吗? 命名空间】
  5. 【干货】旷视科技11篇 ICCV 2019论文预览
  6. c语言答辩题目及答案,c语言if语句的练习题答案.doc
  7. 新年第一天,666元大红包来一发!
  8. a类学科计算机,教育部最新一轮学科评估,A类学科数排名前5的大学,性价比最高...
  9. 用Canvas画占百分比的圆形比例
  10. 为什么大家说mysql数据库单表最大两千万?依据是啥?