Dt大数据梦工厂王家林老师 Scala实战详解之第14讲 Scala中作为接口的trait、在对象中混入trait代码实战

来源:互联网 发布:facebook网络连接错误 编辑:程序博客网 时间:2024/05/19 13:22
package com.dt.scalaInAction.demo_014class UserTrait {  }/** * trait和Java中的有所不同 interface中只能定义abstarct public方法 而trait中可以定义具体实现方法 */trait Logger{    def log(msg: String)  //在trait中定义抽象方法    def logImpl(msg: String){} //在trait中定义具体方法}/** * 类可以继承多个trait     语法为:extend trait with trait1 */class ConcreteLogger extends Logger with Cloneable{    override def log(msg: String) = println("Log:"+msg)  //复写Logger trait中log抽象方法     def concreteLogger{        log("It's me")    }}/** * 在使用对象混入trait使用的前提是  该TraitLogger要继承复写方法的那个trait */trait TraitLogger extends Logger{    override def log(msg: String){        println("TraitLogger log content is :" + msg)    }}trait TraitLoggered{    def logged(msg: String){        println("TraitLoggered log content is :" + msg)    }}/** * Scala中作为接口的trait、在对象中混入trait */object InterfaceOps {    def main(args: Array[String]): Unit = {       val concreteLogger = new ConcreteLogger       concreteLogger.concreteLogger             //row result : Log:It's me              val concreteLogger1 = new ConcreteLogger with TraitLogger //在实例化是混入trait 则会调用TraitLogger中的log       concreteLogger1.concreteLogger            //row result : TraitLogger log content is :It's me    }}



以上内容是从王家林老师DT大数据课程第14讲的学习笔记和个人整理。

DT大数据微信公众账号:DT_Spark
王家林老师QQ:1740415547
王家林老师微信号:18610086859

第14讲视频网站地址:http://pan.baidu.com/s/1mgL2t9u


0 0