java採用三個顯示關鍵字public,private,protected以及一個暗示性的friendly來修飾類,變量以及方法.
public:任何後續的定義任何人都可以使用.
private除了自己,類型的創建者以及類的內部函數,其他無法訪問.
friendly涉及到包裝概念.
protected與private相似,只是一個繼承的類可以訪問受保護的成員,但是不能訪問私有成員.
上面的說明比較抽象籠統,下面按照對象消息交互的兩個步驟來談訪問控制,面向對象是消息驅動機制,交互有兩個步驟: 一 獲得對象 二給對象的接口發送消息.因此java的訪問控制也主要分兩個步驟:第一客戶類是否能夠獲取對象(主要有組合 以及繼承),第二:能否訪問對象中的變量以及方法.
根據上述兩個步驟, 訪問控制主要有兩道關卡:1 類的訪問控制權限 2類中方法的訪問控制權限,具體如下:
類修飾關鍵詞:
修飾類只能:public,abstract,final.不加修飾即爲friendly類.只有修飾爲public的類,別的 包的類纔可以繼承或者引用這個類.定義爲abstract,final以及不加修飾的類,別的包的類無法繼承以及引用這個類.變量,方法修飾關鍵詞:
public修飾的變量以及方法,任何類都可以訪問,只要別的類有權限訪問本類.private修飾的方法,只有類內部纔可以訪問,別的類即使new了一個含有private的的class,也不可以訪問private類,這樣的話,A類中的private方法,無論A類是什麼類型,別的類都無法訪問A類的private方法,即使別的類 A a=new A();也不可以採用如下方法訪問Private方法:a.privateMethodName();protected修飾的方法,同樣不可以採用a.proctedMethodName()訪問.private修飾的方法變量,只有B類繼承了A類,才能使用super.proctedMethodName()訪問.friendly修飾的方法,對別的包的類來說都是不可訪問的