网站首页 > 精选教程 正文
Override和Overload翻译成中文分别是重写和重载,是Java面向对象中两种方法,今天小编将为大家带来大数据编程入门:Java Override&Overload这篇文章为大家介绍重写和重载的使用方法以及两者之间的区别。
一、重写(Override)
重写就是子类对父类所允许访问的方法的实现过程进行重新编写,反问值和形参不能改变,即外壳不变,核心重写。
重写的好处在于子类可以根据自己的需求,定义自己的行为,即能够根据自己的需要实现父类的方法。
重写方法不能引发新的检查异常或比重写方法的声明更宽泛的异常。例如:父类的一个方法声明了一个检查异常IOException,但是重写这个方法时,不能抛出异常,因为Exception是IOException的父类,只能抛出IOException的子类的异常。
在面向对象中,重写意味着可以重新编写任何现有方法,示例如下:
运行结果:
在上面的这段代码中可以看到,即使b是Animal类型,但是它运行的是Dog类的move方法。
这是因为在编译时,只需检查参数的引用类型。
但是,在运行时,Java虚拟机(JVM)指定对象的类型并运行其方法。
因此,在上面的示例中,之所以能够成功编译,是因为在animal类中有一个move方法。但是,在运行时,它运行特定对象的方法。
思考下面的这段代码:
运行结果:
程序将抛出编译错误,因为b的引用类型Animal没有bark方法。
二、方法的重写规则
A. 参数列表必须与重写方法的参数列表完全相同。
B. 重写方法的返回类型和返回类型可以不同,但它们必须从父类的返回值派生(java5和早期版本具有相同的返回类型,java7和更高版本可以不同)。
C. 访问权限不能低于父类中重写方法的访问权限。例如,如果父类的方法被声明为public,那么在子类中重写该方法就不能被声明为protected。
D. 父类的成员方法只能由其子类重写。
E. 不能重写声明为final的方法。
F. 不能重写声明为static的方法,但可以再次声明。
G. 如果子类和父类在同一个包中,则子类可以重写父类的所有方法,但声明为private和final的方法除外。
H. 如果子类和父类不在同一个包中,则子类只能重写声明为public并受父类保护的非final方法。
I. 重写的方法可以引发任何非强制异常,而不管重写的方法是否引发异常。但是,重写的方法不能抛出新的强制异常,也不能抛出比重写的方法声明的异常更广泛的强制异常,反之亦然。
J. 无法重写构造方法。
K. 如果不能继承类,则不能重写其方法。
三、Super关键字的使用
当您需要在子类中调用父类的重写方法时,请使用super关键字。
运行结果:
四、重载(Overload)
重载在具有相同方法名但不同参数的类中。返回类型可以相同也可以不同。
每个重载方法(或构造函数)都必须具有唯一的参数类型列表。
最常见的地方是构造函数过载。
过载规则:
A. 重载方法必须更改参数列表(参数的数目或类型不同);
B. 重载方法可以改变返回类型;
C. 重载方法可以更改访问修饰符;
D. 重载方法可以声明新的或更广泛的检查异常;
E. 方法可以在同一类或子类中重载。
F. 返回值类型不能用作重载函数的区分标准。
示例:
五、重写与重载之间的区别
区别点 | 重载方法 | 重写方法 |
参数列表 | 必须修改 | 不能修改 |
返回类型 | 可以修改 | 不能修改 |
异常 | 可以修改 | 可以减少或删除,不能抛出新的或者更广的异常 |
访问 | 可以修改 | 不能做更严格的限制(可以降低限制) |
总结
方法的重写(Override)和重载(Overloading)是Java多态性的不同表现。重写是父类和子类之间多态性的表现。超载可以理解为多态性的具体表现。
A. 方法重载是在一个类中定义的,该类中多个方法具有相同的名称,但其参数的数量不同或数字相同,但类型和顺序不同。它称为方法的重载(Overloading)。
B. 方法重写是一种方法,子类中方法的名称与父类中的方法名称相同,参数的数量与类型相同,返回值相同。它被称为重写(Override)。
C. 方法重载是类的多态性,方法重写是子类和父类的一种多态性表现。
以上就是关于大数据编程入门:Java Override&Overload的全部内容了,希望这篇文章能够帮助到大家~
猜你喜欢
- 2024-11-09 区分方法重载和重写,解释其发生在运行时还是编译时
- 2024-11-09 初学java常见问题:Java方法的重载是咋回事?
- 2024-11-09 Java修炼终极指南:42. 举例说明擦除与重载
- 2024-11-09 经典回答:《重载和重写的区别》Java面试冲击月薪40K高薪
- 2024-11-09 脸打肿都不要忘了呀,Java 重写时应当遵守的 11 条规则
- 2024-11-09 Java语言基础图解-第二阶段(继承-重载-重写-多态-抽象-接口)
- 2024-11-09 面试突击14:方法重写和方法重载有什么区别?
- 2024-11-09 Java中方法重载和覆盖之间的区别 方法重载和方法覆盖
- 2024-11-09 Java | 深入理解方法调用的本质(含重载与重写区别)
- 2024-11-09 重载Overload和重写的区别。重载的方法能否根据返回类型进行区分
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)