Java 重载(Overload)与重写(Override)

本文详细探讨了Java中的重载和重写。重载发生在同一个类中,同名方法通过参数列表的不同(个数、类型、顺序)进行区分,而重写发生在有继承关系的类中,子类方法覆盖基类方法,保持参数列表和返回类型一致。两者都是多态的表现形式,但有着明显的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、重载

1.什么是重载

一个类里边的重名方法

2.学习重载的目的

明确调用的是哪个方法,当一个类中出现同名方法时,通过方法名来确定调用的是哪个方法已经不行了,所以就要看参数列表了。

3.定义

同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。
“两同一不同”:同一个类,同名方法,参数列表不同(个数、类型、顺序)

4.重载规则
  • 重载是通过不同的方法参数来区分的,例如不同的参数个数、不同的参数类型或不同的参数顺序。
  • 不能通过方法的访问权限、返回值类型和抛出的异常类型来进行重载。
  • 对于继承来说,如果基类的访问权限为private,那么就不能在派生类对其重载;如果派生类也定义了一个同名的参数,这只是一个新的方法,不会达到重载的效果。

二、重写

1.定义

在有继承关系的类中,重写是指派生类函数覆盖基类函数。覆盖一个方法并对其重写,以达到不同的作用。

2.本质

外壳不变,核心重写。

3.好处

子类可以根据需要定义特定与自己的行为。

4.方法重写的规则
  • 参数列表必须与被重写的方法相同;
  • 返回类型必须与被重写的方法的返回类型相同;
  • 访问权限不能比父类中被重写的方法的访问权限更严苛;
  • 父类的成员方法只能被它的子类重写;
  • 声明为final的方法不能被重写;
  • 声明为static的方法不能被重写,但是能够被再次声明;
  • 如果一个方法不能被继承,那么该方法不能被重写;
  • 子类和父类在同一个包中,那么子类可以覆写父类的所有方法,除了声明为privatefinal的方法;
  • 构造方法不能被重写;
  • 子类重写的方法抛出的异常类型不大于父类被重写的方法抛出的异常类型
package ExceptionTest;

import java.io.FileNotFoundException;
import java.io.IOException;

/**
 * @BelongsProject: untitled
 * @BelongsPackage: ExceptionTest
 * @Author: mcc
 * @CreateTime: 2020-09-10 08:04
 * @Description:子类重写的方法抛出的异常类型不大于父类被重写的方法抛出的异常类型
 */
public class OverrideTest {
    public static void main(String[] args) {
        OverrideTest overrideTest = new OverrideTest();
        overrideTest.display(new SubClass());//利用多态传了一个子类对象
    }
    public void display(SuperClass superClass){
        /**
         * 当子类所抛异常比父类大时,catch这里就没法处理了,说明有缺陷了,为了避免这个缺陷,
         * 子类重写的方法抛出的异常类型不大于父类被重写的方法抛出的异常类型
         */
        try {
            superClass.method();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
class SuperClass{
    public void method()throws IOException{

    }
}
class SubClass extends SuperClass{
    @Override
    public void method() throws FileNotFoundException {

    }
}

三、重载和重写的区别

在这里插入图片描述

四、总结

其实在Java中,重载和重写本身就没有关系,只是表现形式上有些相似,所以才要对它两进行区分。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值