package com.wy.scala.oop
/**
* @author Lewis
*/
/**
* trait 类似于java中的interface接口
*/
trait Logger{
//抽象方法
//def log (msg:String)
//带实现的抽象方法
def log(msg:String){}
}
//如果只是继承一个接口,用extends关键字,如果多个的话,后面的用with引入
class ConcreateLogger extends Logger with Cloneable{
override def log(msg:String) = println("Logger : It's me!")
def concreateLog{
println("It's me")
}
}
//子trait,类型一致,才能覆盖,在实例被调用时,才能混入覆盖父trait
trait TraitLogger extends Logger{
override def log(msg:String){
println("TraintLogger Log content is : " + msg)
}
}
//继承App,相当于继承了一个main方法入口
object traitOps extends App{
//在对象中混入trait(TraitLogger)
val logger = new ConcreateLogger with TraitLogger
logger.concreateLog
logger.log("s")
}
Scala深入浅出实战经典:14,Scala中作为接口的trait、在对象中混入trait代码实战
最新推荐文章于 2018-11-14 11:28:07 发布