Traits就像Java中的接口,它也可以包含代碼。
在Scala中,當一個類從trait繼承時,它實現(xiàn)trait的接口,并繼承trait中包含的所有代碼。
在Scala中,traits可以繼承類。
當一個類繼承一個trait作為其父類時,也使用關鍵字extends。
即使當類使用with關鍵字在其他traits中混合時,也使用關鍵字extends。
此外,當一個trait是另一個trait或類的子對象時使用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); }
更多建議: