ITPub博客

首页 > 应用开发 > Java > trait

trait

原创 Java 作者:541732025 时间:2015-11-16 21:03:09 0 删除 编辑
在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博客 ” ,链接:https://blog.itpub.net/28912557/viewspace-1839844/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-05-23

  • 博文量
    127
  • 访问量
    515720