/**
* Created by JN on 2015/10/28.
*/
trait Logger{// 指定關鍵子 trait
def log(msg : String )//
}
class ConcreateLogger extends Logger with Cloneable{ //第一次使用trait,左側沒有trait 那就用extends,如果有就用with
override def log(msg: String ) = println( "log:" + msg)
def concreateLog: Unit ={
log("It's me" )
}
}
object UseTrait {
def main(args: Array[String ]) {
val log = new ConcreateLogger
log.concreateLog
}
def main(args: Array[String ]) {
val log = new ConcreateLogger
log.concreateLog
}
/**
* Created by jn on 2015/10/28.
*/
trait Logger{//指定關鍵子trait
// def log(msg : String)//
def log(msg : String ){}
}
trait TraitLogger extends Logger{//對象混入,類型要一致,進行覆蓋
override def log(msg : String ): Unit ={
println("TraitLogger log content is " + msg)
}
}
class ConcreateLogger extends Logger with Cloneable{ //第一次使用trait,左側沒有trait那就用extends,如果有就用with
override def log(msg: String ) = println( "log:" + msg)
def concreateLog: Unit ={
log("It's me" )
}
}
object UseTrait {
def main(args: Array[String ]) {
// val log = new ConcreateLogger
// log.concreateLog
val log = new ConcreateLogger with TraitLogger //將log實現進行混入
log.concreateLog
}