本文记录我对Scala语言Traits的一些理解。
trait >= interface
Scala语言没有接口(Interface)的概念,取而代之的,是功能更加强大的Trait。因此,interface在Scala语言里并不是关键字,我们可以自由的使用它,如下面这段代码所示:
但是要注意,上面的代码虽然是合法的Scala代码,能编译出ScalaObject.class。但是如果想在Java里正常使用这个class的话,就会遇到问题。
没有具体方法的Trait会被编译成接口
如果一个Trait没有定义任何有具体实现的方法,那么它和接口是等价的。换句话说,如果一个Trait的所有方法(如果有的话)全都是抽象的,那么Scala会把它编译成Java接口。比如下面这个没有任何方法的TraitA: