Scala类

时间:2020-01-09 10:47:18  来源:igfitidea点击:

除其他外,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;
         }
     
    }