Groovy特质继承

时间:2015-05-27 10:56:30

标签: groovy traits

在下面的示例中,特征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' }
}

断言仍然过去了。实现另一个特征和扩展另一个特征之间是否存在任何有意义的差异?

1 个答案:

答案 0 :(得分:1)

implements用于多重继承。我不会对extends

产生任何影响

http://docs.groovy-lang.org/latest/html/documentation/#_multiple_inheritance

  

或者,特征可以扩展多个特征。在这种情况下,必须在implements子句

中声明所有超级特征