Scala是一种面向对象的编程语言,它具有创建对象的能力,该对象无需类即可定义其成员。
一个单独的对象没有关联与它即它不存在任何类类。它是使用object关键字而不是class关键字定义的,并且是一个实例,不是一个蓝图,因此它不需要外部调用即可执行其方法。
为什么选择单例对象?
每个程序都需要一个从执行开始的点。在OOPS中,类需要对象才能执行。但是main()
需要首先执行该方法以调用该类的其他成员。
为了main()
在scala中执行该方法,许多面向对象的编程语言都使用static关键字,但是scala编程语言中没有static关键字。这就是为什么在Scala中我们使用定义了main方法的单例对象。
没有类就可以存在的对象是单例对象。It objects关键字用于定义它。
语法:
object singleton_objname { // object code , member functions and fields. }
使用object关键字创建。
成员是全局成员,即可以从程序中的任何位置调用成员。
如果是单例对象,则无法创建实例。
允许继承,即继承可以扩展类和特征。
对于Singleton对象的多余成员,我们将使用Singleton对象的名称点成员名称。
例如,
Singleton_objname.member;
显示单例对象实现的程序
object findsum{ var a = 56 var b = 21 def sum(): Int ={ return a+b; } } object Main { def print(){ printf("The sum is : "+ findsum.sum()); } def main(args: Array[String]) { print(); } }
输出结果
The sum is : 77
说明:
该程序说明了Scala中单例对象的用法。该程序将查找给定数字的总和并将其返回。有2个对象findsum和Main。findsum对象使用sum方法计算两个数字的和。主要对象有两种方法print()
和main()
。打印方法,打印方法返回的值sum()
。
如果类和单例对象具有相同的名称。然后,该类称为同伴类,而singleton对象称为singleton对象。
类和对象都在同一程序文件中定义。
显示伴随对象实现的程序
class companion{ var a = 23; var b = 78; def sum(){ println("The sum is: "+ (a+b)); } } object companion{ def main(args:Array[String]){ new companion().sum(); } }
输出结果
The sum is: 101
说明:
该程序用于说明伴生对象的概念。在这里,该程序用于查找给定整数的总和。为了计算总和,我们在伴随类中有一个方法总和。我们将使用点运算符从伴随对象中调用此方法。