建议6:覆写变长方法也循规蹈矩 在JAVA中,子类覆写父类的中的方法很常见,这样做既可以修正bug,也可以提供扩展的业务功能支持,同时还符合开闭原则(Open-Closed Principle)。符合开闭原则(Open-Closed Principle)的主要特征: 1. ...
建议6:覆写变长方法也循规蹈矩
在JAVA中,子类覆写父类的中的方法很常见,这样做既可以修正bug,也可以提供扩展的业务功能支持,同时还符合开闭原则(Open-Closed Principle)。
符合开闭原则(Open-Closed Principle)的主要特征:
1.对于扩展是开放的(Open for extension)。这意味着模块的行为是可以扩展的。当应用的需求改变时,我们可以对模块进行扩展,使其具有满足那些改变的新行为。也就是说,我们可以改变模块的功能。
2.对于修改是关闭的(Closed for modification)。对模块行为进行扩展时,不必改动模块的源代码或者二进制代码。模块的二进制可执行版本,无论是可链接的库、DLL或者.EXE文件,都无需改动。
下面我们看一下覆写必须满足的条件:
- 覆写方法不能缩小访问权限;
- 参数列表必须与被覆写方法相同;
- 返回类型必须与被重写方法的相同;
- 重写方法不能抛出新的异常,或者超出父类范围的异常,但是可以抛出更少,更有限的异常,或者不抛出异常。
看下面这段代码:
1 public class Client6 { 2 public static void main(String[] args) { 3 // 向上转型 4 Base base = new Sub(); 5 base.fun(100, 50); 6 // 不转型 7 Sub sub = new Sub(); 8 sub.fun(100, 50); 9 }10 }11 12 // 基类13 class Base {14 void fun(int price, int... discounts) {15 System.out.println("Base......fun");16 }17 }18 19 // 子类,覆写父类方法20 class Sub extends Base {21 @Override22 void fun(int price, int[] discounts) {23 System.out.println("Sub......fun");24 }25 }
原标题:编写高质量代码:改善Java程序的151个建议(第1章:JAVA开发中通用的方法和准则___建议6~10)
关键词:JAVA
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。