Scala 組合和繼承–重載成員函數(shù)和方法

2018-09-28 18:26 更新

組合和繼承–重載成員函數(shù)和方法

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

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

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

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

Scala 把字段和方法放進(jìn)同一個(gè)命名空間的理由很清楚,因?yàn)檫@樣你就可以使用 val 重載無參數(shù)的方法,

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)