特质
在Scala中,Trait(特质)的功能类似于Java中的接口,但Trait的功能却比Java中的接口强大。例如,Trait可以对定义字段和方法进行实现,而接口却不能。Scala中的Trait可以被类和对象(Objects)使用关键字extends来继承。
创建特质的语法格式如下:
 trait traitName
上述语法格式中,关键字trait主要用于创建特质;traitName为特质的名称。
下面,我们创建一个特质Animal,演示类继承特质并访问特质中方法的操作。具体代码如文件1所示。
 文件1 People.scala
 1  trait Animal {
 2    //没有实现
 3    def speak()
 4    def listen(): Unit = {
 5    }
 6    def run(): Unit = {
 7      println("I'm running")
 8    }
 9  }
 10 class People extends Animal {
 11   override def speak(): Unit = {
 12     println("I'm speaking English")
 13   }
 14 }
 15 object People{
 16   def main(args: Array[String]): Unit = {
 17     var people = new People
 18     people.speak()
 19      people.listen()
 20     people.run()
 21   }
 22 }
上述代码中,第1-7行代码是创建了一个特质Animal,并在该特质中定义了三个方法speak()、listen()和run();第10-12行代码是创建一个类People并继承特质Animal,重写特质中的方法speak();第15-20行代码是主方法main(),在主方法中创建People类的实例对象people,再使用实例对象访问特质Animal中的方法。
运行上述文件1中的代码,效果如图1所示。

 图1 类继承特质并访问特质中方法的运行结果
