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