class
類的定義
class Person(gender: String) {
//輔構造函數
def this() = this("woman")
var name = ""
override def toString(): String = s"$name 's gender = $gender"
}
類的定義中可以有多個構造參數。 Scala中隻有一個主要構造函數,其他都是輔助構造函數。輔助構造函數必須調用主構造函數。
主構造函數需要傳入性别,輔助構造函數預設将性别設定為woman
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPB5kMFpmT4NmeNBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLzcDNxQjNzUTM4AzNwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
在Scala中,類并不用聲明為public類型的。
Scala源檔案中可以包含多個類,所有這些類都具有共有可見性。
class定義的類可以繼承,繼承後子類可以調用父類的非私有方法和屬性
定義一個類,這個類可以定義但不能運作main方法
這個類隻是一個抽象,不能直接調用,需要new一個執行個體出來
object
object的定義
object Person {
val age = 12
def eat(){println("吃東西")}
}
Scala單例對象是十分重要的,沒有像在Java一樣,有靜态類、靜态成員、靜态方法,但是Scala提供了object對象,這個object對象類似于Java的靜态類,它的成員、它的方法都預設是靜态的。
Scala它使用單例對象。單例是一種隻能有一個執行個體的對象。使用object關鍵字對象而不是類關鍵字建立單例。由于無法執行個體化單例對象,是以無法将參數傳遞給主構造函數。
object的main方法
在scala中,如果要運作一個應用程式,那麼必須有一個main方法,作為入口
scala中main方法定義為def main(args: Array[String]), 并且必須定義在object中
還有第二種可以運作程式的方式 繼承App類
也可以運作程式
伴生對象
提到class和object就不得不提伴生對象,當一個類和一個靜态對象的名字一樣的時候,可以說這個對象是這個類的伴生對象 ,這個類是這個對象的伴生類。
伴生類和伴生對象必須存放在一個.scala檔案中
伴生類和伴生對象最大的特點在于,可以互相通路Private field
伴生對象特有的方法:apply。
可以通過伴生對象 更直接簡單的建立執行個體
通常在伴生對象中實作apply方法,并在其中實作構造伴生類對象的功能;這樣在建立伴生類對象時,可以使用Class()方式(而不僅僅是new Class方式),原理是隐式地調用了伴生對象的apply方法,讓對象建立更加簡潔。
應用