大資料數列修鍊-Scala課程05

來源:互聯網
上載者:User

標籤:

  • Scala多重繼承、構造器的執行順序、AOP實現
    • 多重繼承的trait實現:Scala中介面可以繼承具體的類,trait介面可以實現多重繼承,並且某個類也可以繼承特定的類,在繼承後面可以混入,介面的實現
    • 多重繼承構造器執行順序:多重繼承構造器執行順序是從左至右按次序執行,如果前面類以及被繼承實現了,後面的類就沒有必要去實現,父類只需執行一次
object triatScala {  def main(args: Array[String]): Unit = {   val t1 = new PianoTeacher    t1.playPiano     t1.teach  }  }//公用父類class Human{  println("Human")}//繼承父類的介面trait TTeacher extends Human {    println("TTeacher")  def teach }//繼承父類的介面,並且擁有自己的方法trait PianoPlayer extends Human {    println("PianoPlayer")  def playPiano = {println("I’m playing piano. ")} }  //繼承父類的類並且混入兩個介面實現介面中的方法 實現順序是按照從左至右class PianoTeacher extends Human with TTeacher with PianoPlayer {    override def teach = {println("I’m training students. ")} }
    • 基於trait的AOP代碼實現:介面被另外一個介面繼承並且在實現父類方法的時候也調用父類中抽象方法,在另外一類中是具體實現該公用介面的方法,這樣就可以實現AOP(面向切面編程)
    • //AOP 面向切面編程trait Action {    def doAction  }trait TBeforeAfter extends Action {  //使用抽象方法覆蓋父類的介面實現中需要制定父類的方法,這個方法在具體的類中實現  abstract override def doAction {      println("Initialization")     super.doAction     println("Destroyed")   }  }class Work extends Action{  //具體實現父類方法 override def doAction = println("Working...")}object triatScala {  def main(args: Array[String]): Unit = {   val work = new Work with TBeforeAfter   work.doAction  }}
  • 包的定義以及包對象、包引用、包的隱式引用實現
    • 包定義:Scala中包的定義是可以在一個公用的包下面建立多個包,需要某個包裡的類的執行個體對象,就可以new這個包下面的對象,包也帶上
    • 包對象實現:包對象裡面的方法和屬性,在其他的包中可以訪問他們
    • 包的引用實現:引用某個包中相關類用import後面用{}包括所引用的對象,也可以用java中的包=>用來換用別名,而_表示下面所有包
    • package com.scala.spark  package object people {    val defaultName = "Scala"  }  package people {  class people {    var name = defaultName }  } import java.awt.{Color,Font}import java.util.{HashMap=>JavaHashMap}import scala.{StringBuilder => _}

       

    • 包隱式引用實現:Scala中有幾個隱式包例如java.lang._,scala._,predef_這三個包,好比java中幾個公用包一樣,也是擁有很多工具方法。
  • 關於Scala中包、類、對象、成員、伴生類、伴生對象的存取權限
    • 包、類、對象、成員的存取權限:private[包名]表示該方法、包、類、對象、成員存取權限擴充到該包下面
    • 伴生類、伴生對象存取權限:伴生對象與伴生類可以相互訪問
    • package spark{  package navigation{    //private[spark]表示該類在spark包下有存取權限    private[spark] class Navigator{      //protected[navigation]表示該方法在navigation包下有存取權限      protected[navigation] def useStarChart() {}      class LegOfJourney {        //private[Navigator]表示該常量在navigation包下有存取權限        private[Navigator] val distance =100      }      //private[this]表示該常量在navigation包下有存取權限      private[this] var speed = 200    }  }  package launch{    import navigation._    object Vehicle {      //private[launch]表示該常量在launch該同級的包可以執行個體化      private[launch] val guide = new Navigator    }  }}

       

  • Scala中檔案的讀寫、控制台輸入操作
    • 檔案的讀寫實現:檔案的讀取用source對象中的fromFile方法讀取文本中資料也可用fromURL按照url進行讀取,而寫入用PrintWriter來實現
    • 控制台操作實現:Console.readLine來實現控制台操作,console這在Scala的隱式包中,可以直接使用

  今天就學到這兒.....

     百度視頻地址:http://pan.baidu.com/s/1ntzOmDz

大資料數列修鍊-Scala課程05

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.