Java重载与重写

1,283 阅读1分钟

Java重载与重写的

重写

  • 访问限定符范围不应该小于被覆盖的方法。
  • 返回值应该能向上转型成被覆盖的方法的返回值。
  • 方法签名必须一致,方法名,参数类型、数量、顺序必须一致。
  • throws的方法不能多于被覆盖方法的所抛出的异常。
public class Base {
     protected Base f1() throws IOException { return new Base();};
     String f2(int a,String s ) {return "bach";}
}
public class ExtendsClass extends Base {
    @Override
    public ExtendsClass f1() {
       return new ExtendsClass();
    }
    @Override
    public String toString() {
        return "ExtendsClass";
    }
    public static void main(String[] args) throws IOException {
        Base b = new ExtendsClass();
        Base bb = b.f1();
        String s = bb.toString();
        System.out.println(s);
    }
}

重载

函数签名必须不同,其他不重要,因为根据返回值编译器无法区分出两个方法(有时调用一个方法只是为了获得副作用),因此,函数签名相同,只有返回值不同,不能实现重载。