在下面的示例中,特征Bar
扩展Foo
并且断言传递
trait Foo {
def foo() { 'foo' }
}
trait Bar extends Foo {
def bar() { 'bar' }
}
class Test implements Bar {
}
assert new Test().foo() == 'foo'
assert new Test().bar() == 'bar'
如果我们将Bar
的定义更改为
trait Bar implements Foo {
def bar() { 'bar' }
}
断言仍然过去了。实现另一个特征和扩展另一个特征之间是否存在任何有意义的差异?
答案 0 :(得分:1)
implements
用于多重继承。我不会对extends
:
http://docs.groovy-lang.org/latest/html/documentation/#_multiple_inheritance
或者,特征可以扩展多个特征。在这种情况下,必须在implements子句
中声明所有超级特征