鍍金池/ 教程/ 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ù)和方法

和 Java 稍有不同的一點是,Scala 中成員函數(shù)和成員變量地位幾乎相同,而且也處在同一個命名空間,也就是 Scala 中不允許定義同名的成員函數(shù)和成員變量,但帶來的一個好處是,可以使用成員變量來重載一個不帶參數(shù)的成員函數(shù)。比如,接著前面的例子,你可以通過一個成員變量來實現(xiàn)基類中定義的抽象函數(shù) contents。

class ArrayElement(conts: Array[String]) extends Element {
val contents: Array[String] = conts
}

可以看到,這是使用成員變量來實現(xiàn)基類中不帶參數(shù)的抽象函數(shù)的一個非常恰當(dāng)?shù)睦印?Scala 中的這種實現(xiàn)是 Java 語言所不支持的,一般來說只有兩個不同的命名空間來定義類,而 Java 可以有四個,Scala 支持的兩個命名空間如下:

  • 值(字段,方法,包還有單例對象)
  • 類型(類和Trait名)

Scala 把字段和方法放進同一個命名空間的理由很清楚,因為這樣你就可以使用 val 重載無參數(shù)的方法,