Тот факт, что вы можете вызывать закрытые методы, - ошибка в языке Groovy , а не функция.Тем не менее, я считаю, что эта ошибка была преднамеренно введена как форма компромисса при внесении некоторых изменений в поведение замыканий.
Даже если вы можете вызывать закрытые методы, вы не должны этого делать, потому что, надеюсь, однажды эта ошибка будетисправлено, и если ваша программа полагается на вызов частных методов, она будет повреждена.
Если вы действительно настаиваете на (ab), используя это недокументированное поведение, вы можете попробовать использовать что-то вроде ReflectionUtils для вызоваЗакрытые методы в родительских классах.
Другой обходной путь - предоставить метод в конкретном классе, который вызывает закрытый метод в родительском классе.Например, следующий код «работает», но все равно полагается на доступ к закрытым членам, что плохо
class Parent {
private foo() {println "foo"}
}
class Child extends Parent {
public bar() {super.foo()}
}
new Child().bar()