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

Posted 小写丶H

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重载误区!!!可以不在一个类中!!!相关的知识,希望对你有一定的参考价值。

今天纠正一个重载(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,那么就不能在子类对其进行重载,如果定义的话,也只是定义了一个新方法,而不会达到重载的效果。

以上是关于重载误区!!!可以不在一个类中!!!的主要内容,如果未能解决你的问题,请参考以下文章

静态常量static和方法重载

Java中方法的重载与重写

Java中方法的重载与重写

方法重载的使用与练习

重载 特点

C# 重载在类中找到的对象的属性