GContracts 1.1.0已于端午节前(6月14日)发布了。Andre Steingress 在其博文中,讲述了该版本中修正的ISSUE-1:如何继承后置/前置条件。
继承后置条件
后置条件通常用于:在前置条件满足的情况下,指定在某个方法中必须要做的工作。继承后置条件的说明如下:
- 在继承中,子类同样继承了父类的后置条件,但是子类不能覆盖父类的后置条件;
- 如果在子类中重写(Override)了某个方法,并为之添加了后置条件,那么子类的后置条件会跟父类的后置条件以And的关系整合在一起。
下图有利于理解上述说明:
继承前置条件
前置条件是在执行某个方法之前必须满足的条件。1.1.0之前的版本,不支持前置条件的继承,这就意味着:不管父类定义了什么前置条件,子类重写方法时都必须定义新的前置条件。如下是1.1.0版本支持的继承前置条件的说明:
- 在继承中,子类也同样继承了父类的前置条件;
- 如果在子类中重写(Override)了某个方法,并为之添加了前置条件,那么这个前置条件会削弱父类的前置条件,因为二者是或的关系。
下图能够帮助你理解前置条件的继承:
后置/前置条件的继承补充了诸如多态、动态绑定、重写方法这些面向对象机制,并引导我们正确的使用这些概念。
除了ISSUE-1,该版本还修正了如下内容:
如果你对GContracts 1.1.0感兴趣,可以直接从Github下载或者从Maven资源库获取。
本文摘没有涉及示例代码,有兴趣的可参见原文。