重写与重载的区别

来源:互联网 发布:英雄联盟for mac 国服 编辑:程序博客网 时间:2024/06/16 16:48

重写与重载的区别

  • 重写

    • 重写必须继承,子类重写父类的方法
    • 重写的方法名,参数数目相同,参数类型兼容(返回类型没有要求)
    • 重写的方法的访问权限要大于等于父类的访问权限
    • 重写不可以抛出父类没有抛出的异常,可以抛出运行异常
    class Parent{protected char test(int a) {    System.out.println("Parent");    return 'c';}}class Child extends Parent{public int test(byte a) {    System.out.println("Child");    return 0;}}public class Fuction{public static void main(String args[]) {    Parent a = new Child();    a.test(1);}}
  • 重载

    • 重载方法名必须相同
    • 重载不需要继承,出现在同一个类中
    • 可以有不同的访问修饰符
    • 返回类型不要求,但是不能用返回类型来区分方法
    • 可以抛出不同的异常
    • 参数表必须不同
    public class Fuction{public void test(double a) {    System.out.println("overload");}private int test(int a){    System.out.println("origin");    return 0;}public void run() {    test(1);    test(1.0);}public static void main(String args[]) {    Fuction f = new Fuction();    f.run();}}