「大數據」(九十五)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 ()方法


分享到:


相關文章: