2016-02-11 78 views
0
class A { 
    def p = 18 
    def out() { 
     println(p) 
    } 
} 
class B extends A { 
    def p = 21 
} 

new B().out() 

我有上面的代码片段。输出是**** ..猜猜看是什么?如何覆盖groovy中的字段

我的问题是 - 我该如何取得结果,因为它会在Java?

PS:groovyconsole.appspot.com

UPD 变换属性方法解决问题的Groovy控制台对于那些谁愿意执行上面的示例工作正常。任何其他选项?

+0

当我尝试这在Java中,那么输出是18,不是21,所以Groovy的行为和Java一样在这方面 – blackdrag

+0

@blackdrag你说得对。对我感到羞耻。我忘了java :( – Rumoku

+0

不要担心,当我为Groovy实现这个功能时,我真的很想知道是否应该在Java中允许这样的事情,我可以理解它的私有领域,但也有其他可访问性?我现在也在Groovy中保存它;) – blackdrag

回答

2

如何在初始化块中覆盖p的值?

class B extends A { 
    { p = 21 } 
}