Java方法重写与重载
目录
一、方法重载(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方法重写与重载相关推荐
- Java 方法重写与重载的区别 示例 重载多数相加求和 重写toString()和equals()
Java 方法重写与重载的区别 重载:在同一个类中,当方法名相同,形参列表不同的时候 多个方法构成了重载 重写:在不同的类中,子类对父类提供的方法不满意的时候,要对父类的方法进行重写. 名称\属性 E ...
- Java方法重写与重载的区别
Java方法重写(Override)与重载(Overload)的区别(超详细) 首页在我们要学习这个知识点之前,应该要先了解什么是多态? 在最初学习java的时候,人们都知道,java这种面向对象的语 ...
- java方法重载_在Python中该如何实现Java的重写与重载
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:清风python PS:如有需要Python学习资料的小伙伴可以加点击 ...
- Java的重写和重载机制
Java的重写和重载机制 张磊 zhangleispirit@gmail.com Java的重写和重载是两种在Java中经常提到的两组概念,它们在各个方面都有着很大的不同,本文主要在此做一个归纳总结. ...
- java方法重写和super关键字
//java方法重写和super关键字 //在继承中,其实就是子类定义了和父类同名的方法 //就是方法,属性都是相通的 //重写限制: //被子类重写的方法不能拥有比父类方法更加严格的权限 //sup ...
- 方法重写实例java,java方法重写实例分析
本文实例讲述了java方法重写,分享给大家供大家参考.具体分析如下: 一.方法的重写概述: 1.在子类中可以根据需要对从基类中继承来的方法进行重写. 2.重写的方法和被重写的方法必须具有相同方法名称. ...
- Java方法重写(Overriding)和方法重载(Overloading)
重写(Overriding) 父类与子类之间的多态性,对父类的函数进行重新定义.如果在子类中定义某方法与其父类有相同的名称和参数,我们就说该方法被重写(Overriding).在java中,子类可继承 ...
- Java中方法重写和重载的区别
一.方法的重载 - 重载(overloading) 是在一个类里面,方法名字相同,而参数不同.返回类型可以相同也可以不同.每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表. 重载的规则 ...
- 从jvm角度看懂类初始化、方法重写、重载。
类初始化 在讲类的初始化之前,我们先来大概了解一下类的声明周期.如下图 类的声明周期可以分为7个阶段,但今天我们只讲初始化阶段.我们我觉得出来使用和卸载阶段外,初始化阶段是最贴近我们平时学的,也是笔试 ...
最新文章
- 题解 UVA11354 【Bond】
- android listview 不显示_ListView详细介绍与使用
- MyEclipse 15 集成SVN
- Understand one Simple Factory Pattern
- [网络安全提高篇] 一〇六.SQL注入之手工注入和SQLMAP入门案例详解
- python 示例_Python使用示例设置add()方法
- Flink - allowedLateness
- 如何在C++中集成LUA脚本(LuaWrapper For C++篇)
- IntelliJ IDEA 远程deBug jar包
- Redis命令之scan、sscan、hscan、zcan
- 相见恨晚的一款前端布局神器!
- itunes显示app store无法连接服务器,无法连接到iTunes Store的解决方案
- matlab ode45的使用
- 吸毒后人脸变化系统在禁毒教育展厅中的应用
- 游戏安全反外挂-驱动的认识
- 华为G520联通版刷机包 高仿三星S5 UI风格美化 B老师作品
- 计算机只存在于计算机硬盘上,计算机病毒只存在于计算机硬盘上。()
- 用HTML+CSS+JS做一个漂亮的个人网页
- day15-Appium高级手势操作
- 利用jsoup爬取百度网盘资源分享连接(多线程)