Scala入门No.2-面向接口编程

@(Spark)[接口]

  • 当接口中没有抽象方法, 则该接口时接口工具类, 子类继承该类纯为了使用该接口方法
  • 接口可以用多重继承, 其中基类为extends, 其他的使用多个with进行继承
  • scala的接口支持多重继承, 但是类或者抽象类不支持多重继承, 多重继承使用with(混入)
    -使用with trait中的属性会注入当前类, 使用extends, trait中的属性在父类对象中
  • with关键词可以实现接口, 实例必须复写接口中的抽象方法.
  • 抽象属性
//必须声明类型
val name : String
  • scala的类的实例对象也可以混入接口, 以扩展当前对象的实例功能.
  • 对象可以混入trait
trait Logger {
    def log(message : String) {
        println("Logger:" + message)
    }
}
trait RichLogger extends Logger{
    override def log(message : String) {
        println("RickLogger:" + message)
    }
}

class Loggin(val name :String) extends Logger{
    def loggin{
        println("Hi, welcome" + name)
        log(name)
    }
}
object HelloTrait{

     def main(args: Array[String]) {
        val log = new Loggin("Spark") with RichLogger
        log.loggin
    }
}
  • 多个继承时, 相同的方法从右往左调用
  • 使用trait经典模板方法
  trait Information {
    def getInformation : String


    def checkIn : Boolean ={
      getInformation.equals("Spark")
    }
  }


  class Passenger(val name :String) extends Information {
    override def getInformation: String = name
  }

  def main(args: Array[String]): Unit = {
    val personLoggin = new Passenger("Spark")
    println(personLoggin.checkIn)
  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值