Scala Traits

2022-05-13 15:08 更新

Traits就像Java中的接口,它也可以包含代碼。

在Scala中,當(dāng)一個(gè)類(lèi)從trait繼承時(shí),它實(shí)現(xiàn)trait的接口,并繼承trait中包含的所有代碼。

在Scala中,traits可以繼承類(lèi)。

當(dāng)一個(gè)類(lèi)繼承一個(gè)trait作為其父類(lèi)時(shí),也使用關(guān)鍵字extends。

即使當(dāng)類(lèi)使用with關(guān)鍵字在其他traits中混合時(shí),也使用關(guān)鍵字extends。

此外,當(dāng)一個(gè)trait是另一個(gè)trait或類(lèi)的子對(duì)象時(shí)使用extends。

例子

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);
}
以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)