基於spark的Scala編程—Traits用法

Scala Trait(特徵)

Scala Trait(特徵) 相當於 Java 的接口,實際上它比接口還功能強大。與接口不同的是,它還可以定義屬性和方法的實現。一般情況下Scala的類只能夠繼承單一父類,但是如果是 Trait(特徵) 的話就可以繼承多個,從結果來看就是實現了多重繼承。Trait(特徵) 定義的方式與類類似,但它使用的關鍵字是 trait。

案例

Scala實現多繼承的方式如下:

trait flying {
    def fly() = println("flying")
}

trait gliding {
    def gliding() = println("gliding")
}


class Vehicle (speed : Int){
    val mph :Int = speed
    def race() = println("Racing")
}
class Car (speed : Int) extends Vehicle(speed) {
    override val mph: Int= speed
    override def race() = println("Racing Car")

}
class Bike(speed : Int) extends Vehicle(speed) {
    override val mph: Int = speed
    override def race() = println("Racing Bike")
}

class AirCraft(speed : Int) extends Vehicle(speed) with flying with gliding{
    override val mph: Int = speed
    override def race() = println("Racing")
    override def fly() = println("Flying")
    override def gliding() = println("Gliding")
}



object Main extends App {
   val vehicle1 = new Car(200)
   val vehicle2 = new Bike(100)

   val vehicle3 = new AirCraft(300)
   vehicle3.fly()
   val vehicleList = List(vehicle1, vehicle2, vehicle3)
   println(vehicleList);
   val fastestVehicle = vehicleList.maxBy(_.mph)
   println(fastestVehicle);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章