Scala类
除其他外,Scala是一种面向对象的语言。这意味着我们可以在Scala中定义类,并实例化这些类的对象。我希望我们在阅读本文时了解面向对象编程的基础。
Scala类是Scala对象的模板。这就是说,一个类定义了该类所拥有的信息对象,以及它所展现的行为(方法)。一个类可以包含有关以下信息:
- 领域
- 建设者
- 方法
- 超类(继承)
- 由类实现的接口
- 等等。
在本文中,我将仅关注字段,构造函数和方法。 Scala类的其他方面将在单独的文本中介绍。
基本类别定义
这是Scala中的一个简单的类定义:
class MyClass { }
这节课不是很有趣。在本文全文中,我将添加更多内容。
领域
字段是可以在整个对象内部访问的变量。这与局部变量相反,局部变量只能在声明它们的方法内部访问。这是一个简单的字段声明:
class MyClass { var myField : Int = 0; }
该声明定义了一个类型为Int的字段并将其初始化为值0。
Scala的类型推断可以根据分配给它的值来确定变量的类型。因此,我们实际上可以在上面的字段声明中省略类型,如下所示:
class MyClass { var myField = 0; }
由于默认情况下0假定为Int,因此Scala编译器可以根据分配给它的0推断myField的类型。
建设者
在scala中,构造函数的声明如下:
class MyClass { var myField : Int = 0; def this(value : Int) = { this(); this.myField = value; } }
这个例子定义了一个带有单个参数的构造函数,并将其值分配给字段" myField"。
注意参数和构造函数主体({)之间的" ="。构造函数中必须存在此等号。
还要注意对no-arg构造函数this();的显式调用。除no-arg构造函数外,所有构造函数都必须始终在其主体的开头调用另一个构造函数。
方法
在Scala中,类中的方法是这样定义的:
class MyClass { var myField = 0; def getMyField() : Int = { return this.myField; } }
上面的示例定义了一个名为getMyField
的方法。在方法名称之后声明了返回类型Int。在{和}内部,声明了方法主体。该方法当前仅返回" myField"字段。注意Int和{{之间的=符号。返回值的方法应该在该处带有等号。
我将在单独的文本中更详细地介绍方法和函数。在这里,我刚刚向我们展示了如何在类内部声明方法。
这是一种不返回任何内容,而是修改对象的内部状态(字段)的方法。请注意,此addToMyField()方法如何没有等号,并且未指定返回类型。
class MyClass { var myField = 0; def getMyField() : Int = { return this.myField; } def addToMyField(value : Int) { this.myField += value; } }