【发布时间】:2015-04-30 05:10:30
【问题描述】:
在 Groovy 中,如何在扩展超类的类中覆盖超类中的方法? Java 方式不起作用,因为两种方法(超类中的一种和子类中的一种)都在执行。例如:
class SuperClass {
SuperClass(){
println("This is the superclass")
}
def awaitServer(){
println("awaiting server in the superclass")
}
}
class SubClass extends SuperClass{
SubClass(){
println("This is the subclass")
}
@Override
def awaitServer(){
println("awaiting server in the subclass")
}
}
//////
SubClass sb = new SubClass()
sb.awaitServer()
我得到的输出是:
awaiting server in the superclass
awaiting server in the subclass
正如您所见,当我在子类中覆盖超类的方法时,这两种方法都已执行。为什么会这样? Groovy 中的方法重写是如何实现的?
我在网上搜索过,但我无法弄清楚。有人可以提供一个示例或一个简单的例子吗?
提前谢谢你,
【问题讨论】:
-
我认为你在翻译一个例子时丢失了一些东西,因为它有效......
-
它会打印两者中的任何一个而不是两者——不管发生了什么。除非您在示例中忘记了,
awaitServer的子类中有一个super调用。 -
所以底线是,这段代码不是 OP 实际执行的代码。请参阅底部关于 @TaskAction 的 cmets。误导性问题。
标签: inheritance groovy