学科分类
目录
Spark技术栈

特质

在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所示。

img

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

点击此处
隐藏目录