Scala 學習(7)之「trait (1) 」

做爲接口使用

  • 在 triat 中能夠定義抽象方法,就與抽象類中的抽象方法同樣,只要不給出方法的具體實現便可
  • 類能夠使用 extends 關鍵字繼承 trait,注意,這裏不是 implement,而是 extends,在 Scala 中沒有 implement 的概念,不管繼承類仍是 trait,統一都是 extends
  • 類繼承 trait 後,必須實現其中的抽象方法,實現時不須要使用 override 關鍵字
  • Scala 不支持對類進行多繼承,可是支持多重繼承 trait,使用 with 關鍵字便可
trait HelloTrait {
	def sayHello(name: String)
}
trait MakeFriendsTrait {
	def makeFriends(p: Person)
}
class Person(val name: String) extends HelloTrait with MakeFriendsTrait with Cloneable with Serializable {
	def sayHello(name: String): Unit = println("Hello, " + name)
	def makeFriends(p: Person): Unit = println("Hello, my name is " + name + ", your name is " + p.name)
}

val person = new Person("0mifang")
val fensi = new Person("fensi")
fensi.sayHello("0mifang")
person.makeFriends(fensi)

定義具體方法

trait Logger {
	def log(message: String) = println(message)
}

class Person(val name: String) extends Logger {
	def makeFriends(p: Person) {
。。。

。。。ide

掃碼查看歷史消息,可得到完整版文章

相關文章
相關標籤/搜索