理论教育 类和对象在Scala中的定义和访问控制

类和对象在Scala中的定义和访问控制

时间:2023-06-14 理论教育 版权反馈
【摘要】:对象是类的具体实例,具有生命,占用空间,可以访问类中定义的属性和方法,在面向对象中有种说法叫“万物皆对象”。Scala 中类的定义也是通过class 关键字实现,不过它的类是公有可见性的,其属性也必须在声明的同时赋值,一个Scala 源文件中可以有多个类。private[this]:对象私有字段,只允许所属对象访问,该类其他对象无法访问。

类和对象在Scala中的定义和访问控制

一、类的声明

类是现实世界或思维世界中的实体在计算机中的反映,类是一个抽象的概念,没有生命,不占用空间,由方法和属性组成。对象是类的具体实例,具有生命,占用空间,可以访问类中定义的属性和方法,在面向对象中有种说法叫“万物皆对象”。

Scala 中类的定义也是通过class 关键字实现,不过它的类是公有可见性的(不能声明为public),其属性也必须在声明的同时赋值,一个Scala 源文件中可以有多个类。FirstClass 类的声明如下:

二、对象的创建

Scala 对象的创建需要使用new 关键字,格式如下:

new 类名 或 new 类名(参数)

创建完对象,就可以通过对象名.方法名访问,如:

scala> val obj1 = new FirstClass

obj1: FirstClass = FirstClass@a7ae1a5

scala> obj1.sayHello

Hello, Scala

scala> obj1.getAge

res42: Int = 1

随着代码量的增多,命令行模式不利于调试,可以将上述代码放入scala 文件中执行,而且一个Scala 源文件中可以有多个类,如图7-22 所示:

(www.daowen.com)

图7-22 FirstClass.scala

FirstClass.scala 文件的运行如图7-23 所示:

图7-23 运行FirstClass.scala

需要注意的是命令"scala FirstClass.scala"的执行是在Windows cmd 或Linux shell下执行,不能在scala 命令提示符执行(也可以通过:load 命令在其下执行),如图7-24 所示:

图7-23 命令行模式下运行FirstClass.scala

三、访问权限

Scala 有四种访问权限修饰符:

(1)private:仅类自身的方法可以访问。

(2)protected:仅类自身和派生类的方法可以访问。

(3)public:所有方法都可以访问,默认访问权限。

(4)private[this]:对象私有字段,只允许所属对象访问,该类其他对象无法访问。类的所有对象可以访问private 修饰的私有属性,而private[this]则不允许,如:

之所以访问other.age 是合法的,是因为othert 也同样是Demo1 对象,但如果将age 权限设置为private[this],则会提示如下错误:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈