Scala 特质

Java中提供了接口,允许一个类实现任意数量的接口。在Scala中没有接口的概念,而是提供了“特质(trait)”,它不仅实现了接口的功能,还具备了很多其他的特性。

Scala的特质,是代码重用的基本单元,可以同时拥有抽象方法和具体方法。

Scala中,一个类只能继承自一个超类,却可以实现多个特质,从而重用特质中的方法和字段,实现了多重继承。

/**
  * Created by soyo on 17-11-24.
  */
object 学习Scala {
  trait ID{
    var id:Int
    def currentID():Int
  }
  trait findID{
    def Find(str:String): Unit ={
      println(s"$str")
    }
  }
  //使用extends关键字混入第1个特质,后面可以反复使用with关键字混入更多特质 (这里相当于实现多继承)
  class audi extends ID with findID{
    override var id=100
    override def currentID(): Int = {
      id+=1
      id
    }
  }
  class Porsche extends ID with findID{
    override var id=200
    override def currentID(): Int = {
      id+=2
      id
    }
  }
  def main(args: Array[String]): Unit = {
     val mycar1=new audi()
    val mycar2=new Porsche()
     mycar1.Find("first car!")
    println("first car ID "+mycar1.currentID())
    mycar2.Find("second car!")
    println("second car ID "+mycar2.currentID())

  }

}

 结果:

first car!
first car ID 101
second car!
second car ID 202

 

原文地址:https://www.cnblogs.com/soyo/p/7889527.html