作者:Jakob Jenkov 更新时间:2015-05-23
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。
注意参数与构造函数主体中 { 和参数之间的等号 = 。构造函数中必须存在此等号。
还要注意对无参构造函数 this(); 的显式调用。除无参构造函数外,所有构造函数都必须始终在其主体的开头调用另一个构造函数。
方法
在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;
}
}
原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 《Scala教程》 3.Scala Classes
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/60267.html