scala - 面試總結

object和class的區別?

object是類的單例對象,開發人員無需用new關鍵字實例化。如果對象的名稱和類名相同,這個對象就是伴生對象

伴生對象是什麼?

伴生對象就是與類同名的對象,它和同名類必須存在於同一個源文件中,並且可以相互訪問私有特性。

apply與unapply方法的區別

apply方法經常用在伴生對象中,用於從給定的參數創建一個對象。unapply方法剛好相反,它從對象中提取出構造該對象的參數。

scala樣例類的優點

object Demo extends App {
  //======================樣例類===========================
  //1、樣例類實現了apply方法,不需要使用new關鍵字就能創建該類對象
  val p = People("yk",22)

  //2、樣例類實現了unapply方法,可以通過模式匹配來獲取類屬性
  p match {case People(x,y) => println(x,y)}
  //========================================================
}

case class People(name:String,age:Int)

訪問修飾符

scala訪問修飾符有三個:private、protected、public

訪問修飾符 訪問控制
私有成員 私有成員所在類或者對象的內部可見
保護成員 保護成員所在類的子類可見
公共成員 任何地方都可以被訪問

trait(特質)和abstract class(抽象類)的區別?

一個類只能集成一個抽象類,但是可以通過with關鍵字繼承多個特質;
抽象類有帶參數的構造函數,特質不行(如 trait t(i:Int){} ,這種聲明是錯誤的)

閉包

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章