Inheritance groovy中的闭包在从扩展类调用时不能使用私有字段

Inheritance groovy中的闭包在从扩展类调用时不能使用私有字段,inheritance,groovy,closures,Inheritance,Groovy,Closures,我在groovy中有一个类,其中有一个私有字段和一个方法。在该方法中,我调用http服务,并在那里传递闭包来处理响应。大概是这样的: class WebUiRestRequestSender { private String jSessionIdCookie def login(String username, String password) { //... httpClient.post( path: login,

我在groovy中有一个类,其中有一个私有字段和一个方法。在该方法中,我调用http服务,并在那里传递闭包来处理响应。大概是这样的:

class WebUiRestRequestSender {

    private String jSessionIdCookie

    def login(String username, String password) {
        //...
        httpClient.post(
            path: login,
            body: parameters,
            requestContentType : URLENC
        )  { resp, reader ->
            jSessionIdCookie = getSessionCookie(resp)
        }
    }
}
当我创建这个类的对象并调用这个方法时,一切正常。但是,当我从该类继承并尝试从继承类调用该方法时,我遇到了错误:

groovy.lang.MissingPropertyException: No such property: jSessionIdCookie for class: ResellerWebUiRestRequestSender

为什么呢?为什么超类方法看不到Groovy中超类中定义的属性?

Groovy中的默认访问修饰符是
public
,这有助于无缝地创建POGO,因为Groovy会在类生成时自动添加访问器方法

当访问修饰符更改为
private
时,groovy不会为该属性创建任何访问器方法。以作为只读属性访问该私有属性
getJSessionIdCookie()
方法必须添加到基类中

getJSessionIdCookie() { jSessionIdCookie }

现在,当您在子类中访问
jSessionIdCookie
时,
getProperty
元类实现将调用上述getter方法。

但我不从子类访问jSessionIdCookie?我调用的方法、字段和闭包都在超类中。