方法的重载的规则:方法名称一样,其他不一样
- 方法名称必须相同。
- 参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)。
- 方法的返回类型可以相同也可以不相同。
- 仅仅返回类型不同不足以成为方法的重载。
- 参数列表不同包括:个数不同、类型不同和顺序不同。
- 仅仅参数变量名称不同是不可以的。
- 跟成员方法一样,构造方法也可以重载。
- 声明为final的方法不能被重载和覆盖。这个非常容易忽略
- 声明为static的方法可以被重载但不能覆盖(除非子类是静态类)
-
静态方法是可以重载,但不可以重写的(如果子类是静态类才可以重写)!
public class AA {
static void a(int a) {
}
static void a(int a, int b) {
}
}
方法的覆盖:方法签名一样,只是功能不一样
- 覆盖方法的返回类型、方法名称、参数列表必须与原方法的相同。
- 覆盖方法不能比原方法访问性差(即访问权限不允许缩小)。
- 覆盖方法不能比原方法抛出更多的异常。
- 被覆盖的方法不能是final类型,因为final修饰的方法是无法覆盖的。
- 被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。
- 被覆盖的方法不能为static。子类是静态可以覆盖。http://blog.csdn.net/wz5779354/article/details/52166115
想见: