第11节:scala面向接口编程

 
 
scala接口继承中第一个关键字一定是extends后面再出现接口要用with来实现接口
scala中有个抽象属性:未被实例化的属性,必须说明类型,如val name:String
scala对象的实例也可以混入接口,以扩展实例对象的功能
package com.dt.spark.scala.bascis

trait Logger{
def log(message:String){
println("Logger: "+ message)
}
}

trait aLogger extends Logger{
println("a Logger: " )
override def log(message:String){
println("a Logger: "+ message)
}
}

trait bLogger extends Logger{
println("b Logger: " )
override def log(message:String){
println("b Logger: "+ message)
}
}

trait cLogger extends Logger{
println("c Logger: " )
override def log(message:String){
println("c Logger: "+ message)
}
}

trait dLogger extends Logger{
println("d Logger: " )
override def log(message:String){
println("d Logger: "+ message)
}
}

trait eLogger extends Logger{
println("e Logger: " )
override def log(message:String){
println("e Logger: "+ message)
}
}

trait RichLogger extends Logger{
override def log(message:String){
println("RichLogger: "+ message)
}
}


trait information{
def getInformation:String
def checkIn:Boolean={
getInformation.equals("Spark")
}
println ("getInformation.equals Spark " +checkIn)
}

class Passenger (val name: String){
def getInformation=name
println("getInformation: " +getInformation )
}

class Loggin (val name:String) extends Logger{
def loggin{
println("Loggin name: "+ name)
log(name)
}
}

object HelloTrait {
def main(args: Array[String]): Unit = {
new Loggin("DTspark").loggin
val personLoggin = new Loggin("Hello scala") with RichLogger
personLoggin.loggin
val abcdeLoggin = new Loggin("abcde") with aLogger with bLogger with cLogger with dLogger with eLogger
abcdeLoggin.loggin
new Passenger("Spark").getInformation
val passenger= new Passenger("Sparkjava") with information
passenger.checkIn
}
}



运行结果
Loggin name: DTspark
Logger: DTspark
Loggin name: Hello scala
RichLogger: Hello scala
a Logger:
b Logger:
c Logger:
d Logger:
e Logger:
Loggin name: abcde
e Logger: abcde
getInformation: Spark
getInformation: Sparkjava
getInformation.equals Spark false

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Scala编程(第三版)中英文,代码全 Martin Odersky 是Scala 编程语言的缔造者。他是瑞士洛桑理工学院(EPFL)的教授,同时也是Typesafe, Inc.(已更名为Lightbend)的创始人。他的研究方向是编程语言和系统,更具体地说,就是如何将面向对象和函数式编程风格有机地结合在一起。自2001 年起,他的主要精力集中在设计、实现和改进Scala 上。在此之前,他作为Java 泛型的合作设计者参与了Java 编程语言的开发,同时也是当前javac 参考实现的作者。他还是ACM 院士。Lex Spoon 是Semmle Ltd. 的一名软件工程师。他在EPFL 作为博士后围绕着Scala 开展了两年的工作。他拥有Georgia Tech 的博士学位,在那里他的主攻方向是动态编程语言的静态分析。除Scala 外,他还帮助开发了各类编程语言,包括动态语言Smalltalk、科学计算语言X10,以及支撑Semmle 的逻辑编程语言。他和他的夫人一起生活在Atlanta,他们有两只猫和一只吉娃娃。Bill Venners 是Artima Inc. 的主席,Artima 开发者网站(ww.artima.com)的发行人,以及Escalate Software, LLC 的联合创始人。他著有《Inside theJava Virtual Machine》,这是一本面向程序员讲解Java 平台架构和内部实现原理的书。他在《JavaWorld》杂志上的专栏很受欢迎,主题涵盖Java 内部实现、面向对象的设计和Jini。Bill 从Jini 社区创立之初便十分活跃,领导了Jini 社区的ServiceUI 项目,其API 成为Jini 服务事实上的UI 标准。他还是ScalaTest 的主要开发者和设计者,一个面向Scala 和Java 开发者的开源测试工具。 高宇翔,资深软件开发工程师和系统架构师,同时也是Scala在国内的早期布道者和实践者,曾译有《快学Scala(第2版)》、《快学Scala》(第1版)和《Scala编程》(第1版)等专业书籍。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值