0

我想知道是否可以在父类中定义子类中的变量时为其分配默认值。

举个例子,我就拿露营地的环境来说吧(想不到更好的了)

我们有一个寄宿班级(父母)。住宿可以是帐篷、移动房屋、小木屋等。只有帐篷场地没有露台(默认情况下)。另一个可能有也可能没有,也可能有一些帐篷场地没有的特殊规格(盘子,盖子......等)。

现在...我很懒,更喜欢将变量patio(布尔值)放在住宿类中,然后在帐篷类中声明patio默认为false。或者我应该在每个子类中创建一个庭院变量?

class Lodging{
    String description
    int capacity
    Boolean patio
}

class Tent extends Lodging{
    static mapping = {
        patio defaultValue: false
    }
}

当我创建一个新的 Tent 实例时,会遵循映射规则吗?或者它会给我一个它无法识别变量的错误?

我没有尝试过任何事情,但它闪过我的脑海,并没有设法从 grails doc(或这里)得到答案。希望我的解释和问题是可以理解的:)

4

1 回答 1

0

您可以在子类中使用初始化块,例如:

class Lodging{
    String description
    int capacity
    Boolean patio
}

class Tent extends Lodging{
    static mapping = {
        patio defaultValue: false
    };
    {
        patio = false
    }

}

请注意在初始化块之前必须存在的分号

于 2013-06-06T15:29:54.407 回答