Scala伴生类和伴生对象
单例对象与类同名时,这个单例对象被称为这个类的伴生对象,而这个类被称为这个单例对象的伴生类。伴生类和伴生对象要在同一个源文件中定义,伴生对象和伴生类可以互相访问其私有成员。不与伴生类同名的单例对象称为孤立对象。
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伴生类和伴生对象相关推荐
- 每天学一点Scala之 伴生类和伴生对象
1. object 相当于class的单个实例,因此,在object里声明的变量都是静态变量,静态方法 2. 在object里声明的变量,都是全局变量,也就是类的公共属性,或者类似于java中父类 ...
- 大数据开发语言Scala(三)——伴生类和伴生对象
Scala语言是完全面向对象的语言,所以并没有静态的操作(即在Scala中没有静态的概念).但是为了能够和Java语言交互(因为Java中有静态概念),就产生了一种特殊的对象来模拟类对象,该对象为单例 ...
- Scala中Object和Class区别(伴生类和伴生对象)
文章目录 一,介绍 二,类Class 2.1 类定义 2.2 构造器 1.基本语法 2.构造器参数 2.3 私有成员和Getter/Setter语法 三,单例对象Object 四,伴生对象和伴生类介绍 ...
- [scala-spark]5. 伴生类和伴生对象
单例对象与类同名时,这个单例对象被称为这个类的伴生对象,而这个类被称为这个单例对象的伴生类.伴生类和伴生对象要在同一个源文件中定义,伴生对象和伴生类可以互相访问其私有成员.不与伴生类同名的单例对象称为 ...
- 样例类,样例对象,伴生类,伴生对象
样例类 使用case class 类名 定义 case class Person(var name:String, var age:Int) 可以直接使用 : Person("张三" ...
- [Scala基础]-- 伴生类和伴生对象
Scala比 Java 更面向对象的一个方面是 Scala 没有静态成员.替代品是,Scala 有: 单例对象:singleton object. 除了用 object 关键字替换了 class 关键 ...
- scala的伴生类和伴生对象所属类是什么?
文章目录 说在前面 运行原理 代码体现 解析 说在前面 scala是纯面向对象的语言,C是纯面向过程的语言,Java就是面向过程+面向对象的语言. 在说到伴生对象之前,要先说到java的static关 ...
- Scala伴生类与伴生对象:apply方法/伴生对象可以访问伴生类的私有属性
- 【无标题】Scala 中的伴生类 - 伴生对象
object TT {def main(args: Array[String]): Unit = {val clerk = new Clerkclerk.showInfo()Clerk.test(cl ...
最新文章
- 速腾雷达客户端软件使用说明
- jsp中有关于超链接的问题
- java字符型转百分比_小数转换成百分比,转字符串
- BeanPostProcessor使用心得
- 高效的 JavaScript
- 基于Echarts的HTML5 Canvas折线图柱状图DEMO演示
- 时间戳转换(各种格式的都有,年月日 时分秒 周)
- 探讨C#中字符串的加密
- 一文说清各种分布式一致性协议
- php表格位于页面中央,怎么为表格所在的页面添加编辑限制保护
- find的用法_【同步练习】高一英语下册find+复合宾语用法
- segment段,setjmp和longjmp
- 命运歌姬服务器停服维护中,命运歌姬3月4日更新什么?命运歌姬3月4日更新维护公告[多图]...
- Spring的标签和验证等模块
- Monitor线程同步
- 自己的域名申请和google账户申请
- RS-232协议和RS-485协议
- DevOps知识地图
- bzoj3144 切糕
- 学计算机专业好还是学医专业好,学计算机好还是学医好 程序员的建议就是学医你认为呢...