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