天天看點

trait定義抽象field

  1. Scala中的trait也能定義抽象field, 而trait中的具體方法也能基于抽象field編寫;
  2. 繼承trait的類,則必須覆寫抽象field,提供具體的值;

舉例說明:

trait SayHelloTrait {
  // 抽象的屬性
  val msg:String
  def sayHello(name: String) = println(msg + ", " + name)
}

class PersonForAbstractField(val name: String) extends SayHelloTrait {
  //必須覆寫抽象 field
  val msg = "Hello"
  def makeFriends(other: PersonForAbstractField) = {
    this.sayHello(other.name)
    println("I'm " + this.name + ", I want to make friends with you!!")
  }
}
object PersonForAbstractField{
  def main(args: Array[String]) {
    val p1=new PersonForAbstractField("Tom")
    val p2=new PersonForAbstractField("Rose")
    p1.makeFriends(p2)
  }
}
           

運作結果:

trait定義抽象field