Scala开发教程(33): 组合和继承–重载成员函数和方法

jerry Scala 2015年11月25日 收藏

和Java稍有不同的一点是,Scala中成员函数和成员变量地位几乎相同,而且也处在同一个命名空间,也就是Scala中不允许定义同名的成员函数和成员变量,但带来的一个好处是,可以使用成员变量来重载一个不带参数的成员函数。比如,接着前面的例子,你可以通过一个成员变量来实现基类中定义的抽象函数contents.

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

可以看到,这是使用成员变量来实现基类中不带参数的抽象函数的一个非常恰当的例子。 Scala中的这种实现是Java语言所不支持的,一般来说只有两个不同的命名空间来定义类,而Java可以有四个,Scala支持的两个命名空间如下:

  • 值(字段,方法,包还有单例对象)
  • 类型(类和Trait名)

Scala把字段和方法放进同一个命名空间的理由很清楚,因为这样你就可以使用val重载无参数的方法,