当前位置:网站首页>重载和重写
重载和重写
2022-06-26 05:42:00 【王小小鸭】
方法重载
简单来说就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者重载方法
方法重载指同一个类中定义的多个方法之间的关系,满足下列条件的多个方法相互构成重载。
1)多个方法在同一个类中
2)多个方法具有相同的方法名
3)多个方法的参数不相同,类型不同或者数量不同
下面的程序哪个和show()方法重载()?**A、C、D**
class Demo{
void show(int a,int b,float c){}
}
A.void show(int a,float c,int b){} //√ 参数顺序不同
B.void show(int a,int b,float c){} //× 完全一致
C.int show(int a,float c,int b){return a;} //√ 同方法名,参数顺序不同
D.int show(int a,float c){return a //√ 参数不同方法重载特点:
*重载仅对应方法的定义,与方法的调用无关,调用方式参照标准格式
*重载仅针对同一个类中方法的名称与参数进行识别,与返回值无关,换句话说不能通过返回值来判定两个方法是否相互构成重载
方法重写
* 1、方法重写概念
* 子类出现了和父类中一模一样的方法声明(方法名一样,参数列表也必须一样)
* 2、方法重写的应用场景
* 当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的内容
具体实例: 猫和动物
猫类属于动物类,继承了动物类,具有相同的方法“eat”,并且重写了eat,最后输出的也是重写的“猫吃鱼”
可以结合http://t.csdn.cn/fqWv6理解
package com.object_02;
public class Animal9 {
public int age = 40;
public void eat() {
System.out.println("动物吃东西");
}
}
package com.object_02;
import com.object_02.Animal9;
public class Cat9 extends Animal9 {
public int age = 20;
public int weight = 10;
@Override
public void eat() {
System.out.println("猫吃鱼");
}
public void playGame() {
System.out.println("猫捉迷藏");
}
}
package com.object_02;
public class AnimalDemo9 {
public static void main(String[] args) {
//有父类引用指向子类对象
Animal9 a = new Cat9();
System.out.println(a.age);
// System.out.println(a.weight);
// 因为成员变量编译看和运行看父类,父类中没有,所以weight报错
// 运行出的age也是父类的40
a.eat();
// a.playGame();
//因为成员方法编译看父类,父类Animal中只有eat方法,所以playGame方法报错
//因为运行看子类,所以eat方法运行的结果是子类重写后的"猫吃鱼"
}
}
3、Override注解
* 用来检测当前的方法,是否是重写的方法,起到【校验】的作用 2.7 方法重写的注意事项(掌握)
* 方法重写的注意事项
1. 私有方法不能被重写(父类私有成员子类是不能继承的)
2. 子类方法访问权限不能更低(public > 默认 > 私有)
重载和重写的区别如下(拓展)
1.定义不同---重载是定义相同的方法名,参数不同;重写是子类重写父类的方法。
2.范围不同---重载是在一个类中,重写是子类与父类之间的。
3.多态不同---重载是编译时的多态性,重写是运行时的多态性。
4.返回不同---重载对返回类型没有要求,而重写要求返回类型,有兼容的返回类型。
5.参数不同---重载的参数个数、参数类型、参数顺序可以不同,而重写父子方法参数必须相同。
6.修饰不同---重载对访问修饰没有特殊要求,重写访问修饰符的限制一定要大于被重写方法的访问修饰符。
边栏推荐
- 慢慢学JVM之缓存行和伪共享
- Something about MariaDB
- 【MYSQL】MySQL 百万级数据量分页查询方法及其优化
- AutowiredAnnotationBeanPostProcessor什么时候被实例化的?
- BOM文档
- Owasp-top10 in 2021
- 【PHP】PHP二维数组按照多个字段进行排序
- As promised: Mars, the mobile terminal IM network layer cross platform component library used by wechat, has been officially open source
- 使用Jenkins执行TestNg+Selenium+Jsoup自动化测试和生成ExtentReport测试报告
- 最后一次飞翔
猜你喜欢

cartographer_ fast_ correlative_ scan_ matcher_ 2D branch and bound rough matching
![[arm] add desktop application for buildreoot of rk3568 development board](/img/9a/28015cdea7362261c39ffc7f6e13a9.png)
[arm] add desktop application for buildreoot of rk3568 development board

使用Jenkins执行TestNg+Selenium+Jsoup自动化测试和生成ExtentReport测试报告

redis探索之布隆过滤器

DOM document

pytorch(环境、tensorboard、transforms、torchvision、dataloader)

【活动推荐】云原生、产业互联网、低代码、Web3、元宇宙……哪个是 2022 年架构热点?...

SOFA Weekly | 开源人—于雨、本周 QA、本周 Contributor

Leetcode513.找出树的左下角的值

AutowiredAnnotationBeanPostProcessor什么时候被实例化的?
随机推荐
cartographer_ fast_ correlative_ scan_ matcher_ 2D branch and bound rough matching
自定义WebSerivce作为代理解决SilverLight跨域调用WebService问题
A love that never leaves
Replacing domestic image sources in openwrt for soft routing (take Alibaba cloud as an example)
redis探索之布隆过滤器
Daily production training report (17)
【PHP】PHP二维数组按照多个字段进行排序
FindControl的源代码
How to ensure the efficiency and real-time of pushing large-scale group messages in mobile IM?
5分钟包你学会正则表达式
Learn cache lines and pseudo sharing of JVM slowly
pytorch(环境、tensorboard、transforms、torchvision、dataloader)
Lesson 4 serial port and clock
Navicat如何将当前连接信息复用另一台电脑
SDN based DDoS attack mitigation
The difference between get and post in small interview questions
2021年OWASP-TOP10
skimage. morphology. medial_ axis
国务院发文,完善身份认证、电子印章等应用,加强数字政府建设
循环位移
