Scala學習筆記 --- Private和Private[this]以及Protected、Protected[this]

package com1


/**
  * @author yangxin_ryan
  */
class Test56 {
   private[this] val private_val1:Int = 1
   private val private_val2: Int = 2

   def method1(param: Test56) = param.private_val1
   def method2(param: Test56) = param.private_val2
}



  • Private 用Private修飾的成員僅在包含了成員定義的類或對象內部可見,但是可以通過getter或者setter或者其他方式對外提供,同樣規則也適用於內部類;

  • Private[this] 相對於來說更加嚴格一些,僅僅可以被同一個類的同一個對象訪問;

  • private相對於Private[this]來說破壞了面向對象的封裝性,而private[this]僅僅可以被this訪問到,這樣才符合面向對象設計;

 

 

 

如上圖我們使用method1的param去調用private[this]修飾的元素時,報錯,而method2的param則沒有問題;

因此,上面我們總結的,private[this]會相對於private來說更嚴格一些,只能在對象內部訪問

 

  • Protected的話,對於Java中的protected更嚴格了一些,它只允許保護乘員在定義了該成員的類的子類中被訪問。

  • Protected[this]的話,只能在當前子類對象中訪問負累的field和method,無法通過其他子類對象訪問負累的field和method,此處和Private[this]類似;

  • 而Java中,Protected關鍵字修飾的成員,除了在定義了該成員的子類中可以訪問外,也可以在同一個包裏進行訪問。

  • 對於Priavte[this]來說,還是Private[this]最爲嚴格;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章