/**
* 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
}