Scala学习笔记11【单例对象、伴生对象、Apply方法】
2015-10-09 11:12
281 查看
Scala类之单例对象、伴生对象、Apply方法
单例对象:Scala不能定义静态成员,而是代之定义单例对象(singleton object)。
以object关键字定义,对象定义了某个类的单个实例。
伴生对象:当单例对象与某个类共享同一个名称时,它就被称为是这个类的伴生对象(companion object)。
这个类可以访问伴生对象的所有成员。
代码示例:
Apply方法常用示例程序:
单例对象:Scala不能定义静态成员,而是代之定义单例对象(singleton object)。
以object关键字定义,对象定义了某个类的单个实例。
伴生对象:当单例对象与某个类共享同一个名称时,它就被称为是这个类的伴生对象(companion object)。
这个类可以访问伴生对象的所有成员。
代码示例:
class University{ val id = University.newStudentNo private var number = 0 def aClass(number: Int){this.number += number} } //与类同名,亦为University类的伴生对象 object University{ //被使用时才加载 private var studentNo = 0 def newStudentNo = { //想被外部使用则不能声明为private studentNo += 1 studentNo } } object test { def main(args: Array[String]): Unit = { print(University.newStudentNo + " ") print(University.newStudentNo + " ") print(University.newStudentNo + " ") print(University.newStudentNo + " ") print(University.newStudentNo + " ") } } //运行结果: 1 2 3 4 5
Apply方法常用示例程序:
class Apply{ def apply() = println("我在学习Spark。") def haveATry{ println("Have a try on apply!") } } object Apply{ def apply() = { println("我在学习Scala。") new Apply //返回Apply类的对象实例 } } object ApplyTest { def main(args: Array[String]): Unit = { val array = Array(1,2,3,4,5) //类名后加括号,相当于调用伴生对象的apply方法 val a = Apply() a.haveATry println //对象加括号相当于调用对象的apply方法 println(a()) } } //运行结果: 我在学习Scala。 Have a try on apply! 我在学习Spark。 ()
相关文章推荐
- unity导出安卓APK后图片错乱的解决办法--getResources().getIdentifier()的使用
- 我的BIOS之行【番外】-dos操作系统
- 【API变更纪录】WRITE_SETTINGS权限 在API23只能由系统签名app使用
- API21开始getRunningAppProcesses只返回应用本身的进程信息
- 微信支付 for android 集成笔记( 集成遇到问题记录)
- 我的BIOS之行(2)-Aptio BIOS Overview
- swift 自定义TabBarItem
- 教你用PS给你的室友做一套动态微信豪华表情包
- Android Camera从Camera HAL1到Camera HAL3的过渡(已更新到Android6.0 HAL3.3)
- iOS学习可用网址
- Objective-C---9---内存管理 补充
- iOS9联系人保存详解
- javaScript apply方法的使用详细解析
- iOS 9:快速让你的APP支持spotlight搜索
- Android-RadioGroup-onCheckedChangeListener
- Nexus5 实现全屏显示(屏幕状态监听)(code)
- TSSAO Temporal Screen-Space Ambient Occlusion (Unity3d 5 示例实现)
- Android圆形头像(图标)的实现
- Android典型界面设计(8) ——ViewPager+PagerSlidingTabStrip实现双导航
- TSSAO Temporal Screen-Space Ambient Occlusion (Unity3d 5 示例实现)