方法的重写(override
)
-
方法的重写
子类从父类中继承方法,有时,子类需要修改父类中定义的方法的实现,这称做方法的重写(
method overriding
)。“重写”的概念与“重载”相似,它们均是Java
“多态”的技术之一,所谓“重载”,即是方法名称相同,但却可在不同的场合做不同的事。当一个子类继承一父类,而子类中的方法与父类中的方法的名称、参数个数和类型都完全一致时,就称子类中的这个方法重写了父类中的方法。“重写”又称为“复写”、“覆盖”。 -
如何使用重写
class Super {访问权限 方法返回值类型 方法1(参数1) {...} } class Sub extends Super{访问权限 方法返回值类型 方法1(参数1) —————>复写父类中的方法{...} }
注意:方法重写时必须遵循两个原则,否则编译器会指出程序出错。
- 重写的方法不能比被重写的方法有更严格的访问权限;
- 重写的方法不能比被重写的方法产生更多的异常(关于异常,在后面会介绍)。
方法的重载(overload
)
-
方法的重载
首先回顾一下前面所讲的方法的重载,方法重载是指多个方法可以享有相同的名字,但是参数的数量或类型不能完全相同。 调用方法时,编译器根据参数的个数和类型来决定当前所使用的方法。方法重载为程序的编写带来方便,是
OOP
多态性的具体变现。在Java
系统的类库中,对许多重要的方法进行重载,为用户使用这些方法提供了方便。 -
重载的规则
- 被重载的方法必须改变参数列表(参数个数或类型不一样);
- 被重载的方法可以改变返回类型;
- 被重载的方法可以改变访问修饰符;
- 被重载的方法可以声明新的或更广的检查异常;
- 方法能够在同一个类中或者在一个子类中被重载。
- 无法以返回值类型作为重载函数的区分标准。