特质
在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 类继承特质并访问特质中方法的运行结果