类与对象
无论是在Scala中还是Java中,类都是对象的抽象,而对象都是类的具体实例;类不占用内存,而对象占用存储空间。由于面向对象的核心是对象,若想要在应用程序中使用对象,就必须得先创建一个类。类是用于描述一组对象的共同特征和行为。
创建类的语法格式如下:
class 类名[参数列表]
上述语法格式中,关键字class主要用于创建类。 [参数列表]表示Scala中类定义可以有参数,也可以无参数,若有参数则称为类参数。需要注意的是,Scala中的类不需要关键字public声明为公共的,并且一个Scala源文件中可以拥有多个类。
当类创建好之后,若是想要访问类中的方法和字段,就需要创建一个对象。
创建对象的语法格式如下:
类名 对象名称 = new 类名();
上述语法格式中,关键字new主要用于创建类的实例对象。
下面,我们创建一个Point类 ,并在类中定义两个字段x 和 y 以及一个没有返回值的move()方法,使用Point类的实例对象来访问类中的方法和字段,代码如文件1所示。
文件1 ClassTest.scala
1 class Point(xc: Int, yc: Int) {
2 var x: Int = xc
3 var y: Int = yc
4 def move(dx: Int, dy: Int) {
5 x = x + dx
6 y = y + dy
7 println ("x 的坐标点: " + x);
8 println ("y 的坐标点: " + y);
9 }
10 }
11 object ClassTest {
12 def main(args: Array[String]) {
13 val pt = new Point(10, 20);
14 // 移到一个新的位置
15 pt.move(10, 10);
16 }
17 }
上述代码中,第1-10行代码创建了一个Point类,并在类中定义了两个字段x,y以及一个方法move();第12-15行代码主方法main(),即程序的入口,在主方法中创建类的实例对象pt,使用该对象访问类中方法move()和字段的操作;第11行代码中的object这里不作介绍,在后面小节中会进行介绍。
运行上述文件1中的代码,效果如图1所示。
图1 实例对象访问类中方法和字段的运行结果