2014-12-01 3 views
1

Я пытаюсь получить доступ к свойству из метода в родительском классе, где это свойство инициализируется в классе ребенка, как так:Доступ к родительскому классу свойство устанавливается класс ребенка

abstract class Parent { 
    String description 
    String name 

    def printDescription() { 
     println "description: ${description}" 
    } 
} 

class Child extends Parent { 
    String description = "child description" 
} 

Child child = new Child(name: 'Mark') 
child.printDescription()      // prints "description: null" 

Когда метод выполняется однако, description объект null. Мне нужно передать дочернему description обратно в родительский конструктор. Каков наилучший способ сделать это при сохранении автогенерированных конструкторов карт Grails? Благодаря!

EDIT:

Добавление пустой конструктор на самом деле работает для того, что я ищу. Конструктор по-прежнему вызывается при использовании конструктора динамической карты Grails, например. Child child = new Child(name: 'Mark').

Child() { 
    this.description = "child description" 
} 
+0

Не знаю о граале, но я думаю, вы не должны объявлять новое описание и инициализировать его в конструкторе вместо – realUser404

+0

Да, я думаю, я не должен удивляться, но на самом деле работает в граале без дополнительной работы. Благодаря! – dpcasady

ответ

1

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

+0

Спасибо, я просто не был уверен, что лучший способ передать значение описания родителям с помощью динамических конструкторов Grails, но это намного проще, чем я думал :) – dpcasady

+0

Можете ли вы показать тех из нас, кто не знает, как это делается ? – IcedDante

Смежные вопросы