Scala 类
2018-01-15 20:09 更新
Scala类
类是创建对象的蓝图,对象是类的具体实例。
类定义包括字段声明和方法定义。
字段用于存储对象的状态,方法可以提供对字段的访问,并更改对象的状态。
让我们从创建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实例的代码,然后将其传递给Rectangle
或Circle
的实例:
def draw(s:Shape)
现在,考虑对这个函数的两个调用,像这样:
val circle = draw(new Circle(3)) val rectangle = draw(new Rectangle(2,3))
继承保证任何我们可以在Shape实例上调用的方法都将在子类型中定义。
以上内容是否对您有帮助:
更多建议: