天天看点

Scala特质 trait练习

package Test4
trait Type1{
  def wheele:String={
    "有四个轮子"
  }
  def run()
}
trait Type2{
  def load:String={
    "可以载人"
  }
}
abstract class CarTrait {
def brand:String
  def engine:String
  var didi:String
}

class BM extends CarTrait with Type1 with Type2 {
  override def brand: String = {
    "宝马"
  }

  override def engine: String = {
    "四个轮子"
  }

  override var didi: String = "会叫"

  override def run = {
    println("在地上跑")

  }
}
//未继承特质,调用时继承
class audi extends CarTrait {
  override def brand: String = {"audi"
  }

  override def engine: String = {
    "四个轮子"
  }

  override var didi: String = "会大叫"
}

object DemonCar{
  def main(args: Array[String]): Unit = {
    val bm=new BM
    println(bm.didi)
  bm.run()
    println(bm.engine)
    println(bm.brand)
  }

  //此时再调用特质 trait
  val ai:audi with Type1 with Type2=new audi with Type1 with Type2 {
    override def run(): Unit = {
      "跑的很快"
    }
  }

  println(ai.didi)
  println(ai.brand)
  println(ai.load)
}