указать значение по умолчанию для дочернего класса в grails

Мне было интересно, можно ли присвоить значение по умолчанию переменной в дочернем классе, если она определена в родительском классе.

В качестве примера я возьму среду кемпинга (лучше не мог придумать).

У нас есть жилой класс (родитель). Жилье может быть палаточной площадкой, передвижным домом, шале и т. Д. Только на месте для палаток нет патио (по умолчанию). Другой может иметь или не иметь его, а также иметь некоторые особые характеристики, которых нет на месте для палаток (посуда, покрывала и т. Д.).

Теперь ... Я ленив и предпочитаю помещать переменную патио (логическое значение) в класс жилья, а затем объявить в классе палатки патио по умолчанию как ложь. Или мне следует создать переменную внутреннего дворика в каждом дочернем классе?

class Lodging{
    String description
    int capacity
    Boolean patio
}

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

Когда я создам новый экземпляр Tent, правила сопоставления будут соблюдаться? Или это выдаст мне ошибку, что он не распознает переменную?

Я ничего не пробовал, но это пришло мне в голову, и мне не удалось получить ответ из документа grails (или здесь). Надеюсь, мои объяснения и вопрос были понятны :)


person kanadianDri3    schedule 06.06.2013    source источник
comment
Значит, вы даже не пробовали это, чтобы проверить, работает ли это?   -  person James Kleeh    schedule 06.06.2013
comment
Напишите тест, чтобы проверить, работает ли он. И дайте нам знать :)   -  person lucke84    schedule 06.06.2013
comment
И награда за наименее полезные комментарии достается ...   -  person IcedDante    schedule 28.09.2015


Ответы (1)


вы можете использовать блок инициализации в дочерних классах, например:

class Lodging{
    String description
    int capacity
    Boolean patio
}

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

}

Обратите внимание на точку с запятой, которая должна стоять перед блоком инициализации.

person Kamil Mikolajczyk    schedule 06.06.2013