Scala 面向接口編程


1.如果要實現一個接口,前邊沒有extends關鍵字就可以使用extends,如果有要使用with關鍵字

 

2.Scala 中的接口支持多種繼承,類或者抽象類不支持多種繼承

 

3.抽象屬性:未被實例化的屬性

  定義一個抽象的屬性: val name : String,在實現的子類中直接進行賦值。

 

4.處理類可以混入接口外,Scala類的實例的對象也可以混入接口,以擴展當前對象實例的功能

package com.dtspark.scala.basics

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

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

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

object HelloTrait {
  def main(args: Array[String]): Unit = {
    new Loggin("DTSpark").loggin        //Hi, welcome ! DTSpark
                                        //Logger: DTSpark
    
    val personLoggin = new Loggin("DTSpark") with RichLogger        //混入,好處:類有一個默認的實現,隨時可以擴展第三方實現
    personLoggin.loggin                        //Hi, welcome ! DTSpark
                                            //RichLogger: DTSpark
  }
}

 

6.當繼承有多個trait時,多個trait中有同一個方法時,調用的順序是從由往左,形成一個調用鏈條。

 

7.

//********* trait 中一部分是抽象的,一部分是具體的; 如下是 工廠方法 設計模式
trait Information{
  def getInformation: String //抽象的
  def checkIn: Boolean = {
    getInformation.equals("Spark")
  }
}

class Passenger(val name: String) extends Information{
  def getInformation = name;
}
//*************

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM