转载注明出处[https://www.jianshu.com/p/6894484d4a53]
序
trait用来实现类似于java中接口的功能;
即:允许一个类继承多个超类。
trait是代码重用的基本单元,可以同时拥有抽象方法和具体方法;
scala中一个类只能继承自一个超类,却可以实现多个特质,从而复用特质中的方法和字段,实现了多重继承。
定义
1、单个特质混入类中
trait CarId{
var id : Int //抽象字段
def currentId() : Int //抽象方法
}
class Ben extends CarId{ //用extends或是with都可以
override var id = 1000
def currentId() : Int = {id += 1; id} //返回汽车编号 当然trait中可以包含具体方法的实现
}
2、多个trait混入类中
trait CarId{
var id : Int //抽象字段
def currentId() : Int //抽象方法
}
trait CarGreeting{
def greeting(msg : String) {println(msg)}
}
class Ben extends CarId with CarGreeting{ //用extends混入第一个trait,使用with混入更多trait
override var id = 1000
def currentId() : Int = {id += 1; id} //返回汽车编号 当然trait中可以包含具体方法的实现
}
object MyCar{
def main(args: Array[String]){
val ben = new BenCar()
ben.greeting("ben %d hello!", ben.currentId)
}
}
网友评论