4
在Groovy中,我有一個父類,並在父類的構造函數試圖用封閉如下面的代碼中設置父類的字段值的子類:Groovy的父/子私有字段訪問怪誕用封
try {
def x = new ChildClass()
} catch (ex) {
ex.printStackTrace(System.err)
}
class ParentClass {
private values = []
ParentClass(columnCount) {
columnCount.times { values.add('') }
}
}
class ChildClass extends ParentClass {
ChildClass() {
super(20)
}
}
然而,當我運行此代碼,我收到了groovy.lang.MissingPropertyException消息「沒有這樣的屬性:值類:ChildClass」。不過,如果我更改父類的構造函數不使用與時代同步方法的蓋,在這個例子中:
try {
def x = new ChildClass()
} catch (ex) {
ex.printStackTrace(System.err)
}
class ParentClass {
private values = []
ParentClass(columnCount) {
def i
for (i = 0; i < columnCount; i++) {
values.add('')
}
}
}
class ChildClass extends ParentClass {
ChildClass() {
super(20)
}
}
它的工作原理。有人可以向我解釋這種行爲嗎?我不明白爲什麼Groovy認爲價值觀領域是兒童階層的財產。我正在使用Groovy版本「Groovy版本:1.6.3 JVM:1.5.0_18」。