方法重载和覆盖不一样

方法的重载的规则:方法名称一样,其他不一样

  • 方法名称必须相同。
  • 参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)。
  • 方法的返回类型可以相同也可以不相同。
  • 仅仅返回类型不同不足以成为方法的重载。
  • 参数列表不同包括:个数不同、类型不同和顺序不同。
  • 仅仅参数变量名称不同是不可以的。
  • 跟成员方法一样,构造方法也可以重载。
  • 声明为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

 

想见:

http://www.weixueyuan.net/view/5989.html

原文地址:https://www.cnblogs.com/muffe/p/6579946.html