Scala单例对象和伴生对象
1、Scala单例对象
Scala单例对象是十分重要的,没有像在Java一样,有静态类、静态成员、静态方法,但是Scala提供了object对象,这个object对象类似于Java的静态类,它的成员、它的方法都默认是静态的。
如果object的静态成员要被外界访问,则该成员不能被private修饰
2、Scala伴生对象
如果有同样一个类与该object名字一样,则称该object为该类的伴生对象,相对应,该类为object的伴生类。
如果一个类有它的伴生对象,这个类就可通过object的名字访问到所有成员,但object不在该类的作用范围。
经典伴生对象和伴生类实现demo
/**
* Created by root
* Description : 伴生对象和伴生类
*
* 伴生类ObjectAndClassTest的构造函数定义为private,虽然这不是必须的,却可以有效防止外部实例化ObjectAndClassTest类,使得ObjectAndClassTest类只能供对应伴生对象使用;
* 每个类都可以有伴生对象,伴生类与伴生对象写在同一个文件中;
* 在伴生类中,可以访问伴生对象的private字段ObjectAndClassTest.specialty
* 而在伴生对象中,也可以访问伴生类的private方法:objectAndClassTest.getSpecialtyName()
* 最后,在外部不用实例化,直接通过伴生对象访问方法:ObjectAndClassTest.printSpectalty()
*
*/
class ObjectAndClassTest private(val name:String) { private def getSpecialtyName() = "name = " + name + ";specialty = " + ObjectAndClassTest.specialty
} object ObjectAndClassTest{
private val specialty = "software development"
private val objectAndClassTest = new ObjectAndClassTest("xiaoming")
def printSpectalty() = println(objectAndClassTest.getSpecialtyName()) } object Test{
def main(args: Array[String]): Unit = {
ObjectAndClassTest.printSpectalty()
}
}
Scala单例对象和伴生对象的更多相关文章
- Scala单例对象、伴生对象实战详解
1.Scala单例对象 Scala单例对象是十分重要的,没有像在Java一样,有静态类.静态成员.静态方法,但是Scala提供了object对象,这个object对象类似于Java的静态类,它的成员. ...
- 010-Scala单例对象、伴生对象实战详解
010-Scala单例对象.伴生对象实战详解 Scala单例对象详解 函数的最后一行是返回值 子项目 Scala伴生对象代码实战 object对象的私有成员可以直接被class伴生类访问,但是不可以被 ...
- scala学习手记15 - 独立对象和伴生对象
上一节中的单例对象MarkerFactory 就是一个独立对象的例子.尽管它管理着Marker类,但是它并没有关联到任何类上. scala也可以创建关联到类上的对象.这样的对象同类共享同一个名字,这样 ...
- Scala学习教程笔记二之函数式编程、Object对象、伴生对象、继承、Trait、
1:Scala之函数式编程学习笔记: :Scala函数式编程学习: 1.1:Scala定义一个简单的类,包含field以及方法,创建类的对象,并且调用其方法: class User { private ...
- scala 学习笔记十 一 伴生对象
1.介绍 a.所谓伴生对象就是和某个class同名的object, 并且object 必须和class在同一个scala源文件中. b.在scala中,没有像java中的静态类,静态方法和静态成员等, ...
- Scala入门1(单例对象和伴生类)
一.Hello World程序的执行原理 参考http://blog.csdn.net/zhangjg_blog/article/details/22760957 object HelloWorld{ ...
- 学好Spark/Kafka必须要掌握的Scala技术点(二)类、单例/伴生对象、继承和trait,模式匹配、样例类(case class)
3. 类.对象.继承和trait 3.1 类 3.1.1 类的定义 Scala中,可以在类中定义类.以在函数中定义函数.可以在类中定义object:可以在函数中定义类,类成员的缺省访问级别是:publ ...
- Scala学习笔记之伴生对象
所谓伴生对象, 也是一个Scala中的单例对象, 使用object关键字修饰. 除此之外, 还有一个使用class关键字定义的同名类, 这个类和单例对象存在于同一个文件中, 这个类就叫做这个单例对象的 ...
- Scala学习笔记(二):object、伴生对象和基本类
object object 是只有一个实例的类.它的定义与Java中的class类似,如: // 单例对象 object AppEntry { def main(args: Array[String] ...
随机推荐
- matlab中log函数与rssi转距离
我们通常所说的log是指以10为底的对数,而MATLAB中的log却不是这样.Matlab中的log函数在默认情况下是以e为底,即loge,如果需要计算以10为底的对数,那么需要用log10()函数. ...
- github开源库(一)
http://www.open-open.com/lib/view/open1388317199516.html 1.ActionBarSherlock ActionBarSherlock应该算得上是 ...
- 高通 打开 wifi 驱动 log
在WCNSS_qcom_cfg.ini文件中添加 vosTraceEnableSME=255 vosTraceEnableWDI=255 vosTraceEnableWDA=255 vosTraceE ...
- WinForm控件学习笔记【第一天】——Control类
感悟:明天就又是学校双选会的日子了.两年我都参与了学校的双选会的服务工作,现在该是双选会服务的我时候了.怎么样找到一份好的工作,或者说怎么样学习才能符合企业对人才的要求,我现在也是很迷茫.平时都是在看 ...
- Web打印控件Lodop实现证件套打
第一次接触Lodop大概是在两年前了,那时候研究Lodop主要是为了验证它能不能实现打印时在不修改内容的前提下调整样式,结果是ok的,如今又一次接触它,是因为工作中需要使用它了,于是再一次碰面 Lod ...
- IntelliJ IDEA 的 .idea 目录加入.gitignore无效的解决方法
[转载] 无效的原因是:对应的目录或者文件已经被git跟踪,此时再加入.gitignore后就无效了, 解决办法: 先执行 [文件夹] git rm -r --cached .idea [文件] ...
- Activity优化几个结束的方法
package com.itau.jingdong; import java.util.Stack; import android.app.Activity; import android.app.A ...
- Hopewell Project Sharing项目总结分享PPT
这篇随笔记录的是2013年底,Hopewell Project已经成功验收后,开项目分享会所编写的PPT. 由于此项目是本人带领Team成员一起开发,而且关键技术是自己把控,所以公司希望能开个项目分享 ...
- 周期性调度器scheduler_tick
周期性调度器由中断实现,系统定时产生一个中断,然后启动周期性调度器,周期性调度器执行过程中要关闭中断, 周期性调度器执行完毕后再打开中断(handle_IRQ_event, IRQF_DISABLE ...
- 在C++中实现不可继承的类
逛下bbs,“在C++中实现不可继承的类”,瞒有意思的. class NoInherite { friend class Seal; private: NoInherite(void) {} ~NoI ...