第11节:scala面向接口编程

来源:互联网 发布:淘宝人工 编辑:程序博客网 时间:2024/05/16 16:19

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

原创粉丝点击