重载误区!!!可以不在一个类中!!!

今天纠正一个重载(Overload)误区。

定义

网上很多资料介绍重载的定义都是:
1.发生在同一个类中,
2.方法名必须完全相同
3.参数列表必须不同。
首先这里有极大的误区,重载发生在一个类中,这是错误的,可以不发生在一个类中。

来自oracle官网文档的定义:
在这里插入图片描述
第一段翻译:
如果一个类的两个方法(无论是在同一个类中声明的,还是都由一个类继承的,还是一个声明后继承的)具有相同的名称,但签名不是覆盖等效的,那么该方法名被称为重载。

代码演示

平常的重载:
下面展示一些 。

public class Test01 {
    public int add(int a){
        return a;
    }
    //形参列表,类型,个数,顺序,三者满足一个不同即可
    //(对于顺序,这里的参数肯定不是相同的类型,否则顺序的先后就毫无意义。)
    //构成重载add
    public int add(int a,int b){
        return a+b;
    }
}

继承下的重载:
推翻了,重载只能发生在一个类中, 这句话是错误的。
重载可以不在一个类中!!!

class Sup{
    public int fun(int n){
        return n;
    }
}

class Sub extends Sup{
    //子类中重载fun
    public int fun(int a,int b){
        return a+b;
    }
}

注意事项

1、在使用重载时只能通过不同的参数样式。
2、不能通过访问权限、返回类型、抛出的异常进行重新加载;
3、方法的异常类型和数目不会对重新加载造成影响;
4、对于继承来说,如果某一方法在父类中是访问权限是private,那么就不能在子类对其进行重载,如果定义的话,也只是定义了一个新方法,而不会达到重载的效果。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值