在java中,重载与重写都是多态的体现。重载(Overload)体现的是编译时多态,而重写(Override)体现了运行时多态。

重载(Overload):

定义:在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者参数顺序不同)则被视为重载。

需要说明一点的是,重载对返回类型没有要求,返回类型可以相同也可以不同,但不能通过返回类型是否相同来判断重载。

一个栗子:

public class Wine {
public static void main(String[] args) {
Wine wine = new Wine();
wine.drink();
wine.drink("五粮液");
} public void drink(){
System.out.println("喝的是酒...");
} public void drink(String name){
System.out.println("喝的是:"+name);
}
}

控制台输出:

喝的是酒...
喝的是:五粮液

总结:

1)重载(Overload)是一个类中多态的体现;

2)重载要求同名方法的参数列表不同(参数类型、个数、顺序);

3)重载方法返回值类型可以相同可以不同,不能以返回类型判别是否是重载方法。

重写(Override):

定义:子类把父类中已有的方法重新定义一遍。

说明:子类继承了父类原有的方法,但有时子类并不想原封不动的使用父类中的某些方法。所以在方法名、参数列表,返回类型 都相同的情况下,对方法体进行修改或重写。需要注意的是,子类函数的访问修饰符权限不能低于父类的。

一个栗子:

public class Wine {
public static void main(String[] args) {
WLY wine = new WLY();
wine.drink();
} public void drink(){
System.out.println("喝的是酒...");
} } public class WLY extends Wine{
public void drink(){
System.out.println("喝的是五粮液");
}
}

控制台输出:

喝的是五粮液

总结:

1)重写发生在拥有继承关系的父类与子类之间;

2)方法名、参数列表,返回类型(除过子类中方法的返回类型是父类中返回类型的子类)必须相同;

3)子类中重写方法的访问修饰符权限要大于父类中被重写的方法(public-->protected-->default-->private);

4)重写方法一定不能抛出新的异常或比被重写方法申明更加宽泛的检查型异常。

重载与重写的区别?

方法的重载与重写都是java中实现多态的体现。区别在于前者实现的是编译时多态,而后者实现的是运行时多态。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型、个数,顺序)则视为重载;重写发生在子类与父类之间,重写要求子类重写方法与父类被重写方法有相同的参数列表,有兼容的返回类型,比父类重写更好访问,不能比父类被重写方法声明更多的异常(里氏替换原则)。重载对返回类型没有特殊的要求,不能根据返回类型来区别。

参考:https://blog.csdn.net/wintershii/article/details/80558739

Java_重载与重写的更多相关文章

  1. C#基础回顾(二)—页面值传递、重载与重写、类与结构体、装箱与拆箱

    一.前言 -孤独的路上有梦想作伴,乘风破浪- 二.页面值传递 (1)C#各页面之间可以进行数据的交换和传递,页面之间可根据获取的数据,进行各自的操作(跳转.计算等操作).为了实现多种方式的数据传递,C ...

  2. java 重载、重写、构造函数详解

    方法重写 1.重写只能出现在继承关系之中.当一个类继承它的父类方法时,都有机会重写该父类的方法.一个特例是父类的方法被标识为final.重写的主要优点是能够定义某个子类型特有的行为. class An ...

  3. java 中继承,组合,重载,重写的实现原理 (转)

    我们知道,继承,组合,重载,重写是java语言的面向对象实现的基本特征. 那么在java内部,究竟是如何实现这些面对对象的基本特征的呢? 继承和组合是面向对象中代码复用的主要实现方式,他们可以达到类似 ...

  4. java基础疑难点总结之成员变量的继承,方法重载与重写的区别,多态与动态绑定

    1.成员变量的继承 1.1要点 子类用extends关键字继承父类.子类中可以提供新的方法覆盖父类中的方法.子类中的方法不能直接访问父类中的私有域,子类可以用super关键字调用父类中的方法.在子类中 ...

  5. [转]Java中继承、多态、重载和重写介绍

    什么是多态?它的实现机制是什么呢?重载和重写的区别在那里?这就是这一次我们要回顾的四个十分重要的概念:继承.多态.重载和重写. 继承(inheritance) 简单的说,继承就是在一个现有类型的基础上 ...

  6. Java中重载和重写的区别

    重载 overloading 1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型.重载是一个类中多态性的一种表现. 2) Java的方法重载,就 ...

  7. C#中区别多态、重载、重写的概念和语法结构

    C#中区别多态.重载.重写的概念和语法结构 重写是指重写基类的方法,在基类中的方法必须有修饰符virtual,而在子类的方法中必须指明override. 格式: 基类中: public virtual ...

  8. C++中重载、重写(覆盖)和隐藏的区别实例分析

    这篇文章主要介绍了C++中重载.重写(覆盖)和隐藏的区别,是C++面向对象程序设计非常重要的概念,需要的朋友可以参考下 本文实例讲述了C++中重载.重写(覆盖)和隐藏的区别,对于C++面向对象程序设计 ...

  9. Java基础:多态(重载和重写)

    转载请注明出处:jiq•钦's technical Blog (1)域与静态方法 记住"仅仅有普通方法的调用是多态的". 而域和静态方法不是:对于域的訪问.在编译期间就已经进行解析 ...

随机推荐

  1. IDEA中执行MAVEN命令打jar包

    SpringBoot Jar包打包 1.工程POM配置packaging为jar. <packaging>jar</packaging> 2.增加MAVEN运行配置 添加MAV ...

  2. echarts-饼状图默认选中高亮

    1.首页需要设置legend legend: { data: ["积极", "负面"], selectedMode: false, show: false } ...

  3. tf的一些基本用法

    1.tf.where https://blog.csdn.net/ustbbsy/article/details/79564828 2.tf.less   tf.less(x,y,name=None) ...

  4. Kali Linux ——在无网络情况下安装无线网卡驱动

    1.背景: 今日刚刚开始学习kali linux,众所周知,安装完成后,系统是没有无线网卡驱动的,这就对学生党造成相当的困扰:校园网要连接有线是需要认证客户端的,而认证客户端只有windows端,如此 ...

  5. VMware对虚拟机快照进行克隆

    1.在关机状态下做一个快照 2.把快照管理器打开 3.右键快照,选择“克隆此快照” 4.选择要克隆的快照 5.选择克隆的方式 6.设置名称及保存的位置 注:虚拟机的快照是开机状态,不能对快照进行克隆

  6. 《剑指offer》数组中的逆序对

    本题来自<剑指offer> 反转链表 题目: 思路: C++ Code: Python Code: 总结:

  7. eclipse中alt+/失效的几种解决方法

    1.次方法用于没有一点提示的情况:依次打开eclipse上面的windows ——preferences ——java ——editor —— content assist ,在右上方有一行“sele ...

  8. 微服务(Microservices)【翻译】

    微服务 “微服务架构(Microservice Architecture)”一词在过去几年里广泛的传播,它用于描述一种设计应用程序的特别方式,作为一套独立可部署的服务.目前,这种架构方式还没有准确的定 ...

  9. 周一干货~手把手教你安装 Visual Studio 安卓模拟器

    干货~手把手教你安装 Visual Studio 安卓模拟器 转 http://mini.eastday.com/mobile/171107134734194.html# 今天软妹为大家带来一篇来自M ...

  10. Linux-共享内存通信

    Linux共享存储通信 内容 创建共享存储区实现进程通信 机理说明 共享存储区(Share Memory)是Linux系统中通信速度最高的通信机制.该机制中共享内存空间和进程的虚地址空间满足多对多的关 ...