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]最爲嚴格;