第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Scala中對象和類之間的區(qū)別

Scala中對象和類之間的區(qū)別

瀟瀟雨雨 2019-11-21 10:55:27
我剛剛瀏覽了Internet上的一些Scala教程,并注意到在某些示例中,在示例開始時聲明了一個對象。class和objectScala 和有什么不一樣?
查看完整描述

3 回答

?
縹緲止盈

TA貢獻2041條經(jīng)驗 獲得超4個贊

class C 定義一個類,就像在Java或C ++中一樣。

object O創(chuàng)建一個單例對象O作為某些匿名類的實例;它可用于保存與某些類的實例不相關的靜態(tài)成員。

object O extends T使對象O成為的實例trait T; 然后您可以通過O任何地方,這T是預期的。

如果有class C,那么類object C的伴隨對象C ; 請注意,伴隨對象不會自動成為的實例C。

另請參閱Scala文檔以獲取對象和類。


用作靜態(tài)成員的主機

大多數(shù)情況下,您需要一個object來保存無需首先實例化某個類的實例即可使用的方法和值/變量。這種用法與staticJava中的成員緊密相關。


object A {

  def twice(i: Int): Int = 2*i

}

然后,您可以使用調(diào)用上述方法A.twice(2)。


如果twice是某個類的成員A,那么您需要首先創(chuàng)建一個實例:


class A() {

  def twice(i: Int): Int = 2 * i

}


val a = new A()

a.twice(2)

您可以看到這是多么冗余,因為twice它不需要任何特定于實例的數(shù)據(jù)。


用作特殊的命名實例

您也可以將object自身用作類或特征的某些特殊實例。執(zhí)行此操作時,您的對象需要擴展一些對象trait才能成為其子類的實例。


考慮以下代碼:


object A extends B with C {

  ...

}

此聲明首先聲明一個匿名類(不可訪問),該類同時擴展了B和C,并實例化名為的此類的單個實例A。


這個裝置A可以被傳遞到期望類型的對象的功能B或C,或B with C。


的附加功能 object

Scala中還存在一些對象的特殊功能。我建議閱讀官方文檔。


def apply(...) 啟用的常規(guī)方法的無名稱語法 A(...)

def unapply(...)允許創(chuàng)建自定義模式匹配提取器

如果附帶同名的類,則對象在解析隱式參數(shù)時將扮演特殊角色


查看完整回答
反對 回復 2019-11-21
  • 3 回答
  • 0 關注
  • 956 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號