Scala 类

2022-05-13 15:04 更新

类是创建对象的蓝图,对象是类的具体实例。

类定义包括字段声明和方法定义。

字段用于存储对象的状态,方法可以提供对字段的访问,并更改对象的状态。

让我们从创建Book对象的蓝图的一个简单示例开始:

class Book

前面的Scala声明对应于此Java声明:

public class Book {
}

定义类后,您可以使用关键字new创建类中的对象。

要创建Book的实例,您可以键入以下内容:

new Book

这同样的效果,如下所示︰

new Book()

例子

以下代码创建一个类来表示形状。

我们定义了一个名为Shape的超类型,它有一个计算形状面积的方法区域。

class Shape {
   def area:Double = 0.0
}

以下代码为 Rectangle Circle 创建类。

class Rectangle(val width:Double,val height:Double) extends Shape {
   override def area:Double = width*height
}
class Circle(val radius:Double) extends Shape {
   override def area:Double = math.Pi*radius*radius
}

每个类都接受一些参数并扩展 Shape ,然后覆盖 Shape 的方法。

子类型保证具有超类型的所有成员。

更改超类的方法的实现称为覆盖。

注意

我们不能改变 Rectangle 的宽度和高度以及 Circle 对象的半径,因为如果该字段是一个val ,Scala只会生成一个getter方法。

这是封装的示例。在封装中,对象的字段只能通过其方法访问。

我们可以编写接受Shape实例的代码,然后将其传递给RectangleCircle的实例:

def draw(s:Shape)

现在,考虑对这个函数的两个调用,像这样:

val circle = draw(new Circle(3))
val rectangle = draw(new Rectangle(2,3))

继承保证任何我们可以在Shape实例上调用的方法都将在子类型中定义。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号