「大数据」(九十五)Scala之伴生对象

【导读:数据是二十一世纪的石油,蕴含巨大价值,这是·情报通·大数据技术系列第[95]篇文章,欢迎阅读和收藏】

1 基本概念

如果有同样一个类与该 object 名字一样,则称该 object 为该类的伴生对象,相对应,该类为 object 的伴生类。如果一个类有它的伴生对象,这个类就可通过 object 的名字访问到所有成员,但 object 不在该类的作用范围。 如下图所示:

「大数据」(九十五)Scala之伴生对象

2 术语解释

object 对象为静态常量、静态变量区域,可以直接调用,共享全局变量很有意义,伴生对象方便类的构建,可做为当前类的静态方法、成员的集合。

「大数据」(九十五)Scala之伴生对象

3 详细说明

伴生对象与伴生类在 Scala 的面向对象编程方法中占据极其重要的位置,例如 Scala 中许多工具方法都是由伴生对象提供的。

· 伴生对象与伴生类

伴生对象首先是一个单例对象,单例对象用关键字 object 定义。在 Scala 中,单例对象分为两种,一种是并未自动关联到特定类上的单例对象,称为独立对象

( Standalone Object );另一种是关联到一个类上的单例对象,该单例对象与该类共有相同名字,则这种单例对象称为伴生对象( Companion
Object ),对应类称为伴生类。

「大数据」(九十五)Scala之伴生对象

这是一个典型的伴生类和伴生对象的例子,注意以下说明:

o 伴生类 Person 的构造函数定义为 private ,虽然这不是必须的,却可以有效防止外部实例化 Person 类,使得 Person 类只能供对应伴生对象使用;

o 每个类都可以有伴生对象,伴生类与伴生对象写在同一个文件中;

o 在伴生类中,可以访问伴生对象的 private 字段 Person.uniqueSkill ;

o 而在伴生对象中,也可以访问伴生类的 private 方法

Person.getUniqueSkill ();

o 最后,在外部不用实例化,直接通过伴生对象访问 Person.printUniqueSkill ()方法


分享到:


相關文章: