W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
我們回到前面定義的類 ArrayElement,它有一個(gè)參數(shù) conts,其唯一的目的是用來復(fù)制到 contents 成員變量。而參數(shù)名稱 conts 是為了讓它看起來和成員變量 contents 類似,而有不至于和成員變量名沖突。
Scala 支持使用參數(shù)化成員變量,也就是把參數(shù)和成員變量定義合并到一起來避免上述代碼:
class ArrayElement(val contents: Array[String])
extends Element {
}
要注意的是,現(xiàn)在參數(shù) contents 前面加上了 val 關(guān)鍵字,這是前面使用同名參數(shù)和同名成員變量的一個(gè)縮寫形式。使用 val 定義了一個(gè)無法重新賦值的成員變量。這個(gè)成員變量初始值為參數(shù)的值,可以在類的外面訪問這個(gè)成員變量。它的一個(gè)等效的實(shí)現(xiàn)如下:
class ArrayElement(val x123: Array[String])
extends Element {
val contents: Array[String] = x123
}
Scala 也允許你使用 var 關(guān)鍵字來定義參數(shù)化成員變量,使用 var 定義的成員變量,可以重新賦值。此外 Scala 也允許你使用 private,protected,override 來修飾參數(shù)化成員變量,和你定義普通的成員變量的用法一樣。 比如:
class Cat {
val dangerous =false
}
class Tiger (
override val dangerous: Boolean,
private var age: Int
) extends Cat
這段代碼中 Tiger 的定義其實(shí)為下面類定義的一個(gè)縮寫:
class Tiger(param1: Boolean, param2: Int) extends Cat {
override val dangerous = param1
private var age = param2
}
兩個(gè)成員都初始化自相應(yīng)的參數(shù)。我們?nèi)我膺x擇了這些參數(shù)名,param1 和 param2。重要的是它們不會(huì)與范圍內(nèi)的任何其它名稱沖突。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: