怎样创建单例和半生对象?

​在Scala中,不能用类名直接访问类中的方法和字段,而是创建类的实例对象去访问类中的方法和字段。Scala中提供了object这个关键字用来实现单例模式,若单例对象名与类名相同,则把这个单例对象称作伴生对象,下面具通过体用代码演示单例对象和伴生对象的创建方法。 Python技术文章2021-07-16 |传智教育 |创建单例和半生对象
怎样创建单例和半生对象?

在Scala中,没有静态方法或静态字段,所以不能用类名直接访问类中的方法和字段,而是创建类的实例对象去访问类中的方法和字段。但是,Scala中提供了object这个关键字用来实现单例模式,使用关键字object创建的对象为单例对象。

创建单例对象的语法格式如下:

object objectName

上述语法格式中,关键字object主要用于创建单例对象;objectName为单例对象的名称。

下面,创建一个单例对象SingletonObject,代码如文件1所示。

文件1 Singleton.scala

//单例对象
object SingletonObject {
def hello() {
println("Hello, This is Singleton Object")
}
}
object Singleton {
def main(args: Array[String]) {
SingletonObject.hello()
}
}

上述代码中,第2-4行代码是创建了一个单例对象SingletonObject,并在该对象中定义了一个方法hello();第8-9行代码是主方法main(),并在主方法中使用单例对象访问自己的方法hello()。

运行上述文件1中的代码,效果如图1所示。

怎样创建单例和半生对象?

 图1 单例对象的运行结果

在Scala中,在一个源文件中有一个类和一个单例对象,若单例对象名与类名相同,则把这个单例对象称作伴生对象(companion object);这个类则被称为是单例对象的伴生类(companion class)。类和伴生对象之间可以相互访问私有的方法和字段。

下面,定义一个伴生对象Dog,演示操作类中的私有方法和字段。具体代码如文件2所示。

文件2 Dog.scala

class Dog {
val id = 666
private var name = "二哈"
def printName(): Unit ={
//在Dog类中可以访问伴生对象Dog的私有字段
println(Dog.CONSTANT + name)
}
}
//伴生对象
object Dog{
//伴生对象中的私有字段
private var CONSTANT = "汪汪汪。。。"
//主方法
def main(args: Array[String]): Unit = {
val dog = new Dog
//访问私有的字段name
dog.name = "二哈666"
dog.printName()
}
}

上述代码中,第1-6行代码是创建了一个类Dog,并在该类中定义了两个字段id、name以及一个方法printName();第10-18行代码是创建一个伴生对象Dog,并在该对象中定义一个字段CONSTANT,在主方法main中,创建Dog类的实例对象,再使用实例对象访问类中的字段和方法。

运行上述文件2中的代码,效果如图2所示。

怎样创建单例和半生对象?

图2 伴生对象访问类中方法和字段的运行结果

Python教程

Shell怎样实现定时日志数据采集?【案例展示】

2021-8-7 20:24:38

Python教程

通过fork()函数创建进程方法介绍

2021-8-7 20:25:09

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索