trait

在scala中,trait相当于java中的interface关键字,可以用来定义接口,但是trait除了定义接口,还有许多强大功能

点击(此处)折叠或打开

  1. trait Logger{
  2. // def log (msg : String)
  3.   def log (msg : String){} //与java不同的是,trait允许方法有实现
  4. }

  5. class ConcreteLogger extends Logger with Cloneable{ //with关键字可以用来使用其它trait
  6.   override def log(msg : String) = println("Log: " + msg) //子类覆盖trait方法
  7.   def concreteLog{
  8.     log("It's me !!!")
  9.   }
  10. }

  11. object UseTrait extends App{
  12.     val logger = new ConcreteLogger
        logger.concreteLog
  13. }

结果:Log: It's me !!!

点击(此处)折叠或打开

  1. trait Logger{
  2.   def log (msg : String){}
  3. }
  4. class ConcreteLogger extends Logger with Cloneable{ //with关键字可以用来使用其它trait
  5.   //这里没有覆盖trait的log方法
  6.   def concreteLog{
  7.     log("It's me !!!")
  8.   }
  9. }

  10. trait TraitLogger extends Logger{ //定义另一个子trait,覆trait的方法
  11.   override def log (msg : String){
  12.     println(" TraitLogger Log content is : " + msg)
  13.   }
  14. }

  15. object UseTrait extends App{
  16.     val logger = new ConcreteLogger whit TraitLogger //将具体实现的trait混入到对象中
  17.     logger.concreteLog
  18. }
结果: TraitLogger Log content is : It's me !!!

所以,一般在trait中做很多不同的 工具方法,然后根据运行情况混入不同的trait到对象中

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28912557/viewspace-1839844/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28912557/viewspace-1839844/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值