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