在Scala中,類是使用關鍵字“class”開頭的代碼定義的,定義完成類之后,就可以“new類名”的方式來構造一個對象,而這個對象的類型就是類。在類之中,可以定義val或var類型的變量,也可以定義“def”函數,這些都統稱方法。字段和方法統稱“成員”。字段通常運用于保存對象的狀態與數據,而方法則用于承擔對象的計算任務。
在外部想要訪問成員時,可以使用“對象.成員”的形式來訪問,“val”類型的變量只能與初始化時的對象綁定。Scala的類成員默認都是共有的,都可以使用“對象.成員”的方式來訪問。
在Scala中不需要顯式定義構造方法,而是把類內部非字段、非方法的代碼都當做“主構造方法”,而且,類名后面可以定義若干個參數列表,用于接收參數,這些參數將在構造對象時用于初始化字段并傳遞給主構造方法使用。除了主構造方法,還可以定義若干個輔助構造方法。輔助構造方法都是以“defthis(...)”來開頭的,而且第一步行為必須是調用該類的另一個構造方法,即第一句語句必須是“this(...)”——要么是主構造方法,要么是之前的另一個輔助構造方法。
scala> class Students(n: String) {
| val name = n
| def this() = this("None")
| println("A student named " + n + " has been registered.")
| }
defined class Students
scala> val stu = new Students
A student named None has been registered.
stu: Students = Students@74309cd5
在這個例子中,定義了一個輔助構造方法,該方法是無參的,其行為也僅是給主構造方法傳遞一個字符串“None”。在后面創建對象時,缺省了參數,這樣與主構造方法的參數列表是不匹配的,但是與輔助構造方法匹配,所以stu指向的對象是用輔助構造方法構造的。
在Java里,輔助構造方法可以調用超類的構造方法,而Scala加強了限制,只允許主構造方法調用超類的構造方法(詳情見后續章節)。這種限制源于Scala為了代碼簡潔性與簡單性做出的折衷處理。
————————————————
版權聲明:本文為CSDN博主「_iChthyosaur」的原創文章,遵循CC 4.0 by-sa版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_34291505/article/details/86760620
如果在類名與類的參數列表之間加上關鍵字“private”,那么主構造方法就是私有的,只能被內部定義訪問,外部代碼構造對象時就不能通過主構造方法進行。
主函數是Scala程序的唯一入口,即程序是由主函數開始運行的,要提供這樣的入口,則必須在某個單例對象里定義一個名為“main”的函數,而且這個函數只有一個參數,類型是字符串數組Array[String],函數的返回類型是Unit。任何符合條件的單例對象都能成為程序的入口。
-
scala
+關注
關注
0文章
42瀏覽量
6411 -
Chisel
+關注
關注
0文章
7瀏覽量
452
發布評論請先 登錄
相關推薦
評論