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);
}