Scala学习笔记之单例和伴生对象

在Scala中,没有静态的概念。 所以Scala创建一个单例对象来为程序的执行提供入口点。
怎么理解这句话?就是说你在自己的IDE里写完一个程序,想看看执行结果,因为不像Java一样有静态方法,你直接编译会在控制台界面输出,对于Scala,可以在IDE直接编译,但是不会有输出,如果想看一下程序的输出,那么需要有一个单例对象。

1、单例

单例(Singleton)对象是一个通过使用 object 关键字而不是使用 class 关键字声明的对象。其它对象不需要调用在单例对象中声明的方法。

我们看一下下面这段代码

object Singleton{  
    def main(args:Array[String]){  
        SingletonObject.hello()       // No need to create object.  
    }  
}  


object SingletonObject{  
    def hello(){  
        println("Hello, This is Singleton Object")  
    }  
}

// 运行结果
Hello, This is Singleton Object
2、伴生对象

所谓伴生对象, 也是一个Scala中的单例对象, 使用object关键字修饰。 除此之外, 还有一个使用class关键字定义的同名类, 这个类和单例对象存在于同一个文件中, 这个类就叫做这个单例对象的伴生类, 相对来说, 这个单例对象叫做伴生类的伴生对象。

伴生对象和伴生类可以互相访问其私有成员。伴生对象不能被 new 实例化。
伴生对象是用来代替java中的静态成员,静态成员的作用是什么,就相当于是定了一个全局的成员,改一处全局都变,避免有多处调用,要改多处。

class Test{
  var field = "field"
  def doSomeThing = println("do something")
}
 
object  Test {
	val a = "a string";
	def printString = println(a)
}

总结一下:

  1. 伴生类中定义的字段和方法, 对应同类class类中的成员字段和成员方法
  2. 伴生对象中定义的字段和方法, 对应同名类中的静态方法, 所以可以认为Scala中的object关键字是静态的另一种表示方式, 只是scala将这些静态的东西也封装成了对象

因为我工程实战经验少,对于伴生对象的理解也很浅,到底什么时候可以用,什么时候应该用还没有自己深入的理解,还是那句话,多写代码,实战是检验真理的唯一方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值