鍍金池/ 教程/ Scala/ 組合和繼承–定義參數(shù)化成員變量
包對象
Ordered Trait
組合和繼承–定義 final 成員
基本數(shù)據(jù)類型
Match 表達式
類和對象 (三)
操作基本數(shù)據(jù)類型
for 表達式
組合和繼承–重載成員函數(shù)和方法
類和對象 (二)
組合和繼承–定義 factory 對象
組合和繼承–多態(tài)和動態(tài)綁定
Trait 的基本概念
if 表達式
組合和繼承–抽象類
函數(shù)–函數(shù)字面量的一些簡化寫法
while 循環(huán)
組合和繼承–使用組合還是繼承?
訪問控制修飾符
Trait 示例–Rectangular 對象
組合和繼承–定義參數(shù)化成員變量
組合和繼承–定義無參數(shù)方法
類和對象 (一)
函數(shù)–閉包
函數(shù)–類成員函數(shù)
Scala 基本數(shù)據(jù)類型的實現(xiàn)方法
try 表達式處理異常
選擇瘦接口還是胖接口設(shè)計?
組合和繼承–小結(jié)
創(chuàng)建新的控制結(jié)構(gòu)
使用 import
為訪問控制修飾符添加作用域
Scala 的類層次關(guān)系
類和對象 (五)
傳名參數(shù)
柯里化函數(shù)
函數(shù)–頭等公民
組合和組合和繼承–定義 heighten 和 widen 函數(shù)
使用 Package–將代碼放入包中
隱含的 import
所有類的公共子類–底層類型
進一步 Scala
函數(shù)–局部函數(shù)
引用包中的代碼
組合和繼承–使用 override 修飾符
組合和繼承–實現(xiàn)類 Element 的 above,beside 和 toString()方法
類和對象 (四)
函數(shù)–尾遞歸
沒有“break”和“continue”的日子
組合和繼承–調(diào)用基類構(gòu)造函數(shù)
減低代碼重復(fù)
函數(shù)–函數(shù)–可變參數(shù),命名參數(shù),缺省參數(shù)
起步 Scala
組合和繼承–擴展類
函數(shù)–部分應(yīng)用的函數(shù)
開始神奇的 Scala編程之旅
組合和繼承–概述
Trait 用來實現(xiàn)可疊加的修改操作

組合和繼承–定義參數(shù)化成員變量

我們回到前面定義的類 ArrayElement,它有一個參數(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ù)和同名成員變量的一個縮寫形式。使用 val 定義了一個無法重新賦值的成員變量。這個成員變量初始值為參數(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 的定義其實為下面類定義的一個縮寫:

class Tiger(param1: Boolean, param2: Int) extends Cat { 
    override val dangerous = param1 
    private var age = param2 
}            

兩個成員都初始化自相應(yīng)的參數(shù)。我們?nèi)我膺x擇了這些參數(shù)名,param1 和 param2。重要的是它們不會與范圍內(nèi)的任何其它名稱沖突。