单例对象与类同名时,这个单例对象被称为这个类的伴生对象,而这个类被称为这个单例对象的伴生类。伴生类和伴生对象要在同一个源文件中定义,伴生对象和伴生类可以互相访问其私有成员。不与伴生类同名的单例对象称为孤立对象。

ChecksumAccumulator单例对象有一个方法calculate,用于计算所带的String参数中字符的校验和。它还有一个私有字段cache,一个缓存之前计算过的校验和的可变映射。方法的第一行,"if (cache.contains(s))",检查缓存,看看是否传递进来的字串已经作为键存在于映射当中。如果是,就仅仅返回映射的值,"cache(s)"。否则,执行else子句,计算校验和。else子句的第一行定义了一个叫acc的val并用新建的ChecksumAccumulator实例初始化它。下一行是个for表达式,对传入字串的每个字符循环一次,并在其上调用toByte把字符转换成Byte,然后传递给acc所指的ChecksumAccumulator实例的add方法。完成了for表达式后,下一行的方法在acc上调用checksum,获得传入字串的校验和,并存入叫做cs的val。下一行,"cache += (s -> cs)",传入的字串键映射到整数的校验和值,并把这个键-值对加入cache映射。方法的最后一个表达式,"cs",保证了校验和为此方法的结果。

【伴生类和伴生对象】

Scala伴生类和伴生对象相关推荐

  1. 每天学一点Scala之 伴生类和伴生对象

    1.  object 相当于class的单个实例,因此,在object里声明的变量都是静态变量,静态方法 2.  在object里声明的变量,都是全局变量,也就是类的公共属性,或者类似于java中父类 ...

  2. 大数据开发语言Scala(三)——伴生类和伴生对象

    Scala语言是完全面向对象的语言,所以并没有静态的操作(即在Scala中没有静态的概念).但是为了能够和Java语言交互(因为Java中有静态概念),就产生了一种特殊的对象来模拟类对象,该对象为单例 ...

  3. Scala中Object和Class区别(伴生类和伴生对象)

    文章目录 一,介绍 二,类Class 2.1 类定义 2.2 构造器 1.基本语法 2.构造器参数 2.3 私有成员和Getter/Setter语法 三,单例对象Object 四,伴生对象和伴生类介绍 ...

  4. [scala-spark]5. 伴生类和伴生对象

    单例对象与类同名时,这个单例对象被称为这个类的伴生对象,而这个类被称为这个单例对象的伴生类.伴生类和伴生对象要在同一个源文件中定义,伴生对象和伴生类可以互相访问其私有成员.不与伴生类同名的单例对象称为 ...

  5. 样例类,样例对象,伴生类,伴生对象

    样例类 使用case class 类名 定义 case class Person(var name:String, var age:Int) 可以直接使用 : Person("张三" ...

  6. [Scala基础]-- 伴生类和伴生对象

    Scala比 Java 更面向对象的一个方面是 Scala 没有静态成员.替代品是,Scala 有: 单例对象:singleton object. 除了用 object 关键字替换了 class 关键 ...

  7. scala的伴生类和伴生对象所属类是什么?

    文章目录 说在前面 运行原理 代码体现 解析 说在前面 scala是纯面向对象的语言,C是纯面向过程的语言,Java就是面向过程+面向对象的语言. 在说到伴生对象之前,要先说到java的static关 ...

  8. Scala伴生类与伴生对象:apply方法/伴生对象可以访问伴生类的私有属性

  9. 【无标题】Scala 中的伴生类 - 伴生对象

    object TT {def main(args: Array[String]): Unit = {val clerk = new Clerkclerk.showInfo()Clerk.test(cl ...

最新文章

  1. 速腾雷达客户端软件使用说明
  2. jsp中有关于超链接的问题
  3. java字符型转百分比_小数转换成百分比,转字符串
  4. BeanPostProcessor使用心得
  5. 高效的 JavaScript
  6. 基于Echarts的HTML5 Canvas折线图柱状图DEMO演示
  7. 时间戳转换(各种格式的都有,年月日 时分秒 周)
  8. 探讨C#中字符串的加密
  9. 一文说清各种分布式一致性协议
  10. php表格位于页面中央,怎么为表格所在的页面添加编辑限制保护
  11. find的用法_【同步练习】高一英语下册find+复合宾语用法
  12. segment段,setjmp和longjmp
  13. 命运歌姬服务器停服维护中,命运歌姬3月4日更新什么?命运歌姬3月4日更新维护公告[多图]...
  14. Spring的标签和验证等模块
  15. Monitor线程同步
  16. 自己的域名申请和google账户申请
  17. RS-232协议和RS-485协议
  18. DevOps知识地图
  19. bzoj3144 切糕
  20. 学计算机专业好还是学医专业好,学计算机好还是学医好 程序员的建议就是学医你认为呢...

热门文章

  1. 【机器学习基础】Python实现行转列?!超简单,赶快get起来
  2. 【论文解读】CVPR 2020:物体检测论文精选
  3. 【算法知识】详解希尔排序算法
  4. 千亿市场竟是蓝海——在线音乐教学产品观察
  5. Centos7 下安装配置tomcat7
  6. Web集成工具Thinfinity® VirtualUI™ v2.0发布丨附下载
  7. 微信小程序开发-IP地址查询-例子
  8. 聊聊asp.net中Web Api的使用
  9. iOS UI_APPEARANCE_SELECTOR
  10. 【程序员眼中的统计学(12)】相关与回归:我的线条如何? (转)