重写函数和重载函数区别:
- 重写的方法分散于不同的类中,因继承关系而关联。重载的方法可以在同一个类中,也可以在有继承关系的不同类中
- 重写的方法有相同的签名和返回类型; 重载的方法有相同的方法名,但参数列表不同
为了避免错误,可以使用特殊的Java 语法,称为override annotation (重写注释),将 @Override 放在子类中的方法之前。例子:
public class CircleFromSimpleGeometricObject
extends SimpleGeometricObject {
// other methods are omitted
@Override
public String toString() {
return super.toString() + "\nradius is " + radius;
}
}
这个注释表示,被注释的方法必须重写超类中的方法。如果带有这个注释的方法没有重写超类中的方法,编译器将会报告错误。例如,如果 toString 误写成 tostring, 将会出现编译错误。如果没有这个注释,编译器不会报告错误。所以使用 @Override 可以避免错误。
( 一本Java书上翻译的:11.5 Overriding vs. Overloading)