Scala中類成員變量與Java的區(qū)別

在Java中類成員變量的訪問修飾符可以分為4種:public脉顿,protected效览,private和默認(rèn)残拐。這里默認(rèn)指的是成員變量前面不加任何修飾符愧杯。
通過下面的表格簡單回顧一下這4種修飾符在Java中的區(qū)別

可見性 public protected 默認(rèn) private
同一個類
同一個包中任何的類
同一個包中的子類
同一個包外的子類 是晾咪,通過繼承
包外的任何非子類

Scala中類成員變量的訪問修飾符

分為private收擦,protected和默認(rèn)(無任何修飾符)

  • protected
    在scala中protected比java更加嚴(yán)格,只有子類(無論是否在同一個包中)才可以訪問
  • 默認(rèn)
    通過編譯scala文件可以知道谍倦,這種情況生成的class文件里面其實這個變量是private類型的塞赂,如果定義為val那么scala會自動生成getter方法,如果定義為var那么會自動生成getter和setter方法昼蛀,而且這些方法都是public的宴猾。所以其實這個變量本身是private的,只是使用了它的getter和setter方法進行訪問叼旋。使用變量的方式和java中public修飾的變量類似仇哆,即對象.變量名,但本質(zhì)是不同的夫植。
  • private
    和默認(rèn)修飾符類似的原理讹剔,只是生成的getter或者setter方法為private的,這樣就導(dǎo)致了只有這個類中的方法可以訪問該類的所有對象的這種變量详民,例如
class Person {
  private var id = 0

  def equals(other: Person): Boolean = {
    //other是Person類的一個對象延欠,而且equals在這個類中
    //所以other可以訪問id這個變量
    //如果在其他類中生成一個Person對象是無法訪問id這個變量的
    id == other.id
  }
}
  • private的擴展-對象私有
    scala對私有變量有更加嚴(yán)格的限制方式,即對象私有阐斜。例如上例中衫冻,可以定義id這個變量為private[this] var id = 0,這樣定義的變化
  • 不會再生成setter和getter方法
  • 這個變量只能被當(dāng)前對象訪問谒出,而任何類似對象.id形式的訪問都不被允許
class Person {
  private[this] var id = 0

  //只有當(dāng)前對象可以訪問id
  def generateId = (new util.Random).nextInt(3) + id

  def equals(other: Person): Boolean = {
    //這行編譯會報錯:value id is not a member of Person id == other.id
    //other這個對象已經(jīng)無法再訪問id這個變量了
    id == other.id
  }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末隅俘,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子笤喳,更是在濱河造成了極大的恐慌为居,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,029評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杀狡,死亡現(xiàn)場離奇詭異蒙畴,居然都是意外死亡,警方通過查閱死者的電腦和手機呜象,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評論 3 385
  • 文/潘曉璐 我一進店門膳凝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人恭陡,你說我怎么就攤上這事蹬音。” “怎么了休玩?”我有些...
    開封第一講書人閱讀 157,570評論 0 348
  • 文/不壞的土叔 我叫張陵著淆,是天一觀的道長。 經(jīng)常有香客問我拴疤,道長永部,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,535評論 1 284
  • 正文 為了忘掉前任呐矾,我火速辦了婚禮苔埋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蜒犯。我一直安慰自己讲坎,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,650評論 6 386
  • 文/花漫 我一把揭開白布愧薛。 她就那樣靜靜地躺著晨炕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪毫炉。 梳的紋絲不亂的頭發(fā)上瓮栗,一...
    開封第一講書人閱讀 49,850評論 1 290
  • 那天,我揣著相機與錄音瞄勾,去河邊找鬼费奸。 笑死,一個胖子當(dāng)著我的面吹牛进陡,可吹牛的內(nèi)容都是我干的愿阐。 我是一名探鬼主播,決...
    沈念sama閱讀 39,006評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼趾疚,長吁一口氣:“原來是場噩夢啊……” “哼缨历!你這毒婦竟也來了以蕴?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,747評論 0 268
  • 序言:老撾萬榮一對情侶失蹤辛孵,失蹤者是張志新(化名)和其女友劉穎丛肮,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體魄缚,經(jīng)...
    沈念sama閱讀 44,207評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡宝与,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,536評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了冶匹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片习劫。...
    茶點故事閱讀 38,683評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖嚼隘,靈堂內(nèi)的尸體忽然破棺而出诽里,到底是詐尸還是另有隱情,我是刑警寧澤嗓蘑,帶...
    沈念sama閱讀 34,342評論 4 330
  • 正文 年R本政府宣布须肆,位于F島的核電站,受9級特大地震影響桩皿,放射性物質(zhì)發(fā)生泄漏豌汇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,964評論 3 315
  • 文/蒙蒙 一泄隔、第九天 我趴在偏房一處隱蔽的房頂上張望拒贱。 院中可真熱鬧,春花似錦佛嬉、人聲如沸逻澳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽斜做。三九已至,卻和暖如春湾揽,著一層夾襖步出監(jiān)牢的瞬間瓤逼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評論 1 266
  • 我被黑心中介騙來泰國打工库物, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留霸旗,地道東北人。 一個月前我還...
    沈念sama閱讀 46,401評論 2 360
  • 正文 我出身青樓戚揭,卻偏偏與公主長得像诱告,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子民晒,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,566評論 2 349

推薦閱讀更多精彩內(nèi)容