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){} ,這種聲明是錯誤的)