scala基础16-trait初探/对象中混入trait

/*
 * trait类似java的interface,但比interface强大
 * 和java不同,trait可以有具体的函数实现
 * 如果函数有具体实现,那么实现类重新trait方法时必须写override关键字(按良好习惯,推荐写override)
 */

trait Cloneable extends java.lang.Cloneable

trait Logger {
//  def log(msg: String)
  def log(msg: String) {}
}

/*
 * 继承trait使用extends
 * 如果使用多个trait,extends后使用with
 */
class ConcreateLogger extends Logger with Cloneable {
//  def log(msg: String) = println ("Log: " + msg)
  
  def concreteLog {
    log("It is me")
  }
}

/*
 * 继承于Logger,实现log方法
 */
trait TraitLogger extends Logger {
  override def log(msg: String) {
    println("TraitLogger log content is: " + msg)
  }
}

object Test {
  def main(args: Array[String]) {
    /*
     * 在创建对象的时候混入特质
     * trait中可以实现很多工具方法,那么根据需要可以随时混入
     * 前提:TraitLogger必须必须和ConcreateLogger一样继承于Logger,这样才能覆盖混入
     */
    val logger = new ConcreateLogger with TraitLogger
    logger.concreteLog
  }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值