Scala中的“特质” (trait)

2018-03-08  本文已影响16人  0过把火0

转载注明出处[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)
    }
}
上一篇 下一篇

猜你喜欢

热点阅读