重载误区!!!可以不在一个类中!!!
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,那么就不能在子类对其进行重载,如果定义的话,也只是定义了一个新方法,而不会达到重载的效果。
以上是关于重载误区!!!可以不在一个类中!!!的主要内容,如果未能解决你的问题,请参考以下文章