0

親クラスで定義されている場合、子クラスの変数にデフォルト値を割り当てることができるかどうか疑問に思っていました。

例として、キャンプ場の環境を取り上げます (これ以上良いものは思いつきませんでした)。

宿泊クラス(親)があります。宿泊施設は、テントサイト、トレーラーハウス、シャレーなどのいずれかです。テントサイトのみパティオがありません(デフォルト)。もう1つは、ある場合とない場合があり、テントサイトにはない特別な仕様(皿、カバーなど)もあります。

今...私は怠け者で、変数パティオ(ブール値)を宿泊施設クラスに入れ、テントクラスパティオでデフォルトでfalseを宣言することを好みます。または、すべての子クラスにパティオ変数を作成する必要がありますか?

class Lodging{
    String description
    int capacity
    Boolean patio
}

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

新しいテント インスタンスを作成すると、マッピング ルールが適用されますか? または、変数を認識しないというエラーが表示されますか?

私は何も試していませんが、頭をよぎり、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 に答える