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

Vue2 混入mixins

效果: native message 您的代办事项有:3 件 +   控制台输出: created in overrall created in aaa created in na...
  • xuanwuziyou
  • xuanwuziyou
  • 2017年09月18日 14:20
  • 353

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

占位中。。。。
  • dingyuanpu
  • dingyuanpu
  • 2016年07月19日 01:22
  • 729

Scala特质的混入顺序

代码测试package com.hlf.scala.basic/** * 测试多个特质中有同一个方法,混入顺序的不同最终调用的结果 * 结果显示: * 如果混入的特质是子父类型的话,调用的...
  • pofengliuming
  • pofengliuming
  • 2016年08月18日 13:14
  • 256

Python3学习(25)--多继承之mix-in("混入")技术

前面,我们学习过OOP的继承,知道子类可以继承父类的特性,可以拿来用,也可以改变父类的特性变为已有,当然,我们只是学习了一种继承关系,今天,我们要重新认识一下Python的继承之 多继承 ...
  • Appleyk
  • Appleyk
  • 2017年09月08日 09:01
  • 3200

重读《设计模式》之学习笔记(一)--混入类

    作者在1.6.4提到了混入类,可是对它的描述却非常简单:混入类是给其他类提供可选择的接口或功能的类。它与抽象类一样不能实例化。混入类要求多继承。并给了一个如下的类图:     我觉得,混入类主...
  • starlee
  • starlee
  • 2006年03月27日 16:46
  • 5289

Vue.js Mixins 混入使用

Mixins一般有两种用途: 1、在你已经写好了构造器后,需要增加方法或者临时的活动时使用的方法,这时用混入会减少源代码的污染。 2、很多地方都会用到的公用方法,用混入的方法可以减少代码量...
  • sinat_17775997
  • sinat_17775997
  • 2017年08月02日 09:49
  • 2297

ExtJs--11--Ext定义类时,使用混入的配置项,可实现多继承关系

ExtJs--11--Ext定义类时,使用混入的配置项,可实现多继承关系
  • responsecool
  • responsecool
  • 2014年11月12日 18:47
  • 980

【翻译】在Sencha应用程序中使用插件和混入

当扩展一个框架类的功能的时候,通常都会直接将新功能写入派生类,然而,如果所需的同一功能存在于多个组件,那最有效的方式就是将它定义为一个插件或混入。插件和混入都是用来将额外功能添加到其他类的类。在本文,...
  • tianxiaode
  • tianxiaode
  • 2014年10月24日 17:04
  • 1834

EXTJS中的类和继承

原文地址:EXTJS中的类和继承作者:沧海一笑Extjs 继承的使用 首先看一下经典的JavaScript的继承机制。 定义一个名为BaseClass的类,然后为BaseClass定义两个函数:s...
  • fuyoufang1
  • fuyoufang1
  • 2014年05月06日 17:34
  • 464

Vue中的mixins(混合)使用方法

混合来源:https://cn.vuejs.org/v2/guide/mixins.html 基础混合 (mixins) 是一种分发 Vue 组件中可复用功能的非常灵活的方式。混合对象可以包含任意组件...
  • itpinpai
  • itpinpai
  • 2017年10月16日 11:14
  • 304
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:0014.trait的混入
举报原因:
原因补充:

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