0014.trait的混入

原创 2015年11月21日 08:46:23
1.trait的使用
(1)像java中定义接口一样进行使用,当实现trait的时候,如果实现类没有继承其他类,那么实现类,ConcreateLogger需要extends 一个trait(Logger),如果已经有一个trait或有extends那么就用with继承接口Cloneable,在with后面可以有多个接口,中间用逗号进行分割。

(2)混入
(2.1)对trait(Logger)中的方法进行实现在子类trait(TraitLogger)中
 (2.2)实现类ConcreateLogger必须继承特质Logger
(2.3)ConcreateLogger中的方法调用log方法,实际调用的TraitLogger中的log方法
2.实例
(1)像java中接口一样进行使用
packagecom.jn.scala.oop

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

}

object UseTrait {
 
def main(args: Array[String ]) {
   
val log = new ConcreateLogger
    log.concreateLog
  }

}
运行结果
log:It's me



package com.jn.scala

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

}
//运行结果
TraitLogger log content is It's me
TraitLogger log content is It's me

相关文章推荐

Num 25 : NYOJ0014 会场安排问题 + HDOJ2037:今年暑假不AC [ 贪心 ][ 选择不相交区间 ]

贪心算法解决的另一类问题:         在区间不重叠的情况下选择尽可能长[ 数量多 ]的的区间;       算法思想:         要想选出尽可能多的区间,我们应该遵循下面的原则:     ...

0014算法笔记——【动态规划】凸多边形最优三角剖分

1、问题相关定义:      (1)凸多边形的三角剖分:将凸多边形分割成互不相交的三角形的弦的集合T。     (2)最优剖分:给定凸多边形P,以及定义在由多边形的边和弦组成的三角形上的权...

(0014)iOS 开发之Mac自带的Apache本地服务器玩耍(01)

需求:项目结束,没什么事,一直对服务器的访问比较感兴趣,但是又没有正式的服务器地址测试。所以就想研究一下本地服务器的访问来模拟,正好发现Mac自带的Apache本地服务器。 测试本地Apache ...

Python Show-Me-the-Code 第 0014,0015,0016 题 写Excel文件

第 0014 题: 纯文本文件 student.txt为学生信息, 里面的内容(包括花括号)如下所示:{ "1":["张三",150,120,100], "2":["李四",90,99...

【0014】navicat中把表导出excel

1、Excel中xls和xlsx格式区别 xls是2003版Office Microsoft Office Excel 工作表的格式,用03版Office,新建Excel默认保存的Excel文件格式的...

CSS 选择器(上)(20160814-0014)

选择器总汇与示例

0014 sql 基础(1)

一:为什么学习SQL        自人类社会形成之日起,社会的运转就在不断地产生和使用各种信息(文献、档案、资料、数据等);在如今所谓的信息时代,由于计算机和互联网的作用,信息的产生和使用达到前所未...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:0014.trait的混入
举报原因:
原因补充:

(最多只允许输入30个字)