有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (3) 个答案

  1. # 1 楼答案

    在继承类中,不变量至少应该是同样严格的,但它们可以更严格。如果派生类中省略了一个不变量,则基类的不变量当然适用

    例如:

    // Class invariant : sum should be > -1000
    Account { public int sum; }
    
    // Class invariant : sum should be >= 0
    AccountForKids : inheritsFrom Account { public int sum; }
    

    儿童账户不应低于零,但这当然大于-1000

    一般来说:当类不变量变得更严格时,派生类的契约总是受到追捧

  2. # 2 楼答案

    派生类不变量应该:

    • 检查dervied类中引入的任何成员变量的不变量
    • 检查基类的不变量
  3. # 3 楼答案

    契约式设计概念在适应面向对象语言时会变得稍微复杂一些

    类不变量是一个属性,当调用一个方法时,该类的每个实例都保证具有该属性(如所有方法的公共前置条件),作为回报,每个方法和构造函数必须确保在终止时保持为真(如公共后置条件)

    它们有助于表达一致性条件。对实际钱包进行建模的Wallet类可能具有类不变量,即包含的金额始终为正

    类不变量与契约的其余部分一样,是继承的。方法的新实现必须提供与其替代的方法相同的保证