目录

一、方法重载(overload)

概念

注意

二、方法重写(0verride)

概念

方法重写的应用场景

@Override注解

注意

三、重写与重载区别

访问修饰符


一、方法重载(overload)

概念

方法重载指同一个类中定义的多个方法之间的关系,满足下列条件的多个方法相互构成重载

  • 多个方法在同一个类中

  • 多个方法具有相同的方法名

  • 多个方法的参数不相同,类型不同或者数量不同

所谓方法重载就是指我们可以定义一些名称相同的方法,通过定义不同的参数来区分这些方法,然后再调用时,Java虚拟机就会根据不同的参数列表来选择合适的方法执行。也就是说,当一个重载方法被调用时,Java用参数的类型或个数来决定实际调用的重载方法。因此,每个重载方法的参数的类型或个数必须是不同

注意

  • 重载仅对应方法的定义,与方法的调用无关,调用方式参照标准格式

  • 重载仅针对同一个类中方法的名称与参数进行识别,与返回值无关,换句话说不能通过返回值来判定两个方法是否相互构成重载

  • 示例代码

public class MethodDemo {public static void fn(int a) {//方法体}public static int fn(double a) {//方法体}
}public class MethodDemo {public static float fn(int a) {//方法体}public static int fn(int a , int b) {//方法体}
}

二、方法重写(0verride)

概念

由于类与类的继承关系,使得子类具有父类的属性和方法,此时子类具有父类所有特征,还可以在子类中重新定义,以及追加属性和方法。

所谓方法重写就是子类出现了和父类中一模一样的方法声明(方法名一样,参数列表也必须一样)

方法重写的应用场景

当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的内容 。

  • 示例代码
public class Animal {public void eat() {System.out.println("动物吃东西");}void jump() {System.out.println("动物可以跳高");}
}public class Cat extends Animal {@Overridepublic void eat() {System.out.println("猫吃鱼");}@Overridepublic void jump() {System.out.println("猫一蹦蹦三米");}
}

@Override注解

  • 限定某个方法,是重写父类方法,该注解只能用于方法,起到检验作用

  • @Override表示指定重写父类的方法,如果写了@Override注解,子类写了父类没有的方法则报错

  • 如果不写@Override注解,而子类写了父类的方法,任然构成重写

  • @Override只能修饰方法,不能修饰其他类,包,属性等

注意

  • 私有方法不能被重写(父类私有成员子类是不能继承的)

  • 子类方法访问权限不能更低(public > 默认 > 私有)

  • 示例代码
public class Fu {private void show() {System.out.println("Fu中show()方法被调用");}void method() {System.out.println("Fu中method()方法被调用");}
}public class Zi extends Fu {/* 编译【出错】,子类不能重写父类私有的方法*/@Overrideprivate void show() {System.out.println("Zi中show()方法被调用");}/* 编译【出错】,子类重写父类方法的时候,访问权限需要大于等于父类 */@Overrideprivate void method() {System.out.println("Zi中method()方法被调用");}/* 编译【通过】,子类重写父类方法的时候,访问权限需要大于等于父类 */@Overridepublic void method() {System.out.println("Zi中method()方法被调用");}
}

三、重写与重载区别

方法重载: 
1、同一个类中 
2、方法名相同,参数列表不同(参数顺序、个数、类型) 
3、方法返回值、访问修饰符任意

方法重写: 
1、有继承关系的子类中 
2、方法名相同,参数列表相同(参数顺序、个数、类型),子类<=父类的方法返回值
3、访问修饰符,访问范围需要大于等于父类的访问范围

区别点 重载方法 重写方法
参数列表 必须修改 不能修改
返回类型 可以修改 不能修改
访问 可以修改 一点不能做更严格的限制(可以降低限制)

访问修饰符

修饰符 同一个类中 同一个包中子类无关类 不同包的子类 不同包的无关类
private
默认
protected
public

Java方法重写与重载相关推荐

  1. Java 方法重写与重载的区别 示例 重载多数相加求和 重写toString()和equals()

    Java 方法重写与重载的区别 重载:在同一个类中,当方法名相同,形参列表不同的时候 多个方法构成了重载 重写:在不同的类中,子类对父类提供的方法不满意的时候,要对父类的方法进行重写. 名称\属性 E ...

  2. Java方法重写与重载的区别

    Java方法重写(Override)与重载(Overload)的区别(超详细) 首页在我们要学习这个知识点之前,应该要先了解什么是多态? 在最初学习java的时候,人们都知道,java这种面向对象的语 ...

  3. java方法重载_在Python中该如何实现Java的重写与重载

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:清风python PS:如有需要Python学习资料的小伙伴可以加点击 ...

  4. Java的重写和重载机制

    Java的重写和重载机制 张磊 zhangleispirit@gmail.com Java的重写和重载是两种在Java中经常提到的两组概念,它们在各个方面都有着很大的不同,本文主要在此做一个归纳总结. ...

  5. java方法重写和super关键字

    //java方法重写和super关键字 //在继承中,其实就是子类定义了和父类同名的方法 //就是方法,属性都是相通的 //重写限制: //被子类重写的方法不能拥有比父类方法更加严格的权限 //sup ...

  6. 方法重写实例java,java方法重写实例分析

    本文实例讲述了java方法重写,分享给大家供大家参考.具体分析如下: 一.方法的重写概述: 1.在子类中可以根据需要对从基类中继承来的方法进行重写. 2.重写的方法和被重写的方法必须具有相同方法名称. ...

  7. Java方法重写(Overriding)和方法重载(Overloading)

    重写(Overriding) 父类与子类之间的多态性,对父类的函数进行重新定义.如果在子类中定义某方法与其父类有相同的名称和参数,我们就说该方法被重写(Overriding).在java中,子类可继承 ...

  8. Java中方法重写和重载的区别

    一.方法的重载 - 重载(overloading) 是在一个类里面,方法名字相同,而参数不同.返回类型可以相同也可以不同.每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表. 重载的规则 ...

  9. 从jvm角度看懂类初始化、方法重写、重载。

    类初始化 在讲类的初始化之前,我们先来大概了解一下类的声明周期.如下图 类的声明周期可以分为7个阶段,但今天我们只讲初始化阶段.我们我觉得出来使用和卸载阶段外,初始化阶段是最贴近我们平时学的,也是笔试 ...

最新文章

  1. 题解 UVA11354 【Bond】
  2. android listview 不显示_ListView详细介绍与使用
  3. MyEclipse 15 集成SVN
  4. Understand one Simple Factory Pattern
  5. [网络安全提高篇] 一〇六.SQL注入之手工注入和SQLMAP入门案例详解
  6. python 示例_Python使用示例设置add()方法
  7. Flink - allowedLateness
  8. 如何在C++中集成LUA脚本(LuaWrapper For C++篇)
  9. IntelliJ IDEA 远程deBug jar包
  10. Redis命令之scan、sscan、hscan、zcan
  11. 相见恨晚的一款前端布局神器!
  12. itunes显示app store无法连接服务器,无法连接到iTunes Store的解决方案
  13. matlab ode45的使用
  14. 吸毒后人脸变化系统在禁毒教育展厅中的应用
  15. 游戏安全反外挂-驱动的认识
  16. 华为G520联通版刷机包 高仿三星S5 UI风格美化 B老师作品
  17. 计算机只存在于计算机硬盘上,计算机病毒只存在于计算机硬盘上。()
  18. 用HTML+CSS+JS做一个漂亮的个人网页
  19. day15-Appium高级手势操作
  20. 利用jsoup爬取百度网盘资源分享连接(多线程)

热门文章

  1. 前端通过url链接下载文件
  2. 快速扩展在线文档产品特性的9个开源项目
  3. 从数据库中查找数据并按首字母排序
  4. win10 子系统 wsl 重置
  5. RK3399 Ubuntu 开启WiFi热点
  6. Nginx https 协议配置 ssl_protocols 的相关问题
  7. 敏捷开发团队 项目分工_如何为您的软件开发项目建立敏捷团队
  8. HDU 4808 Drunk
  9. the module was loaded but the call to DllRegisterServer failed with error code 0x80020009
  10. WPC Qi 无线充电标准入门介绍与测试