關於private、protected、public訪問許可權問題
今天給大家說一下Java中的訪問許可權問題。
public:
使用關鍵字public,就意味著public之後緊跟著的成員宣告自己對每個人都是可用的,尤其是使用類庫的客戶程式設計師更是如此。
private:
你無法訪問,關鍵字private的意思是,除了包含該成員的類之外,其他任何類都無法訪問這個成員。private的使用還是很重要的,在多執行緒下更是如此,下面我們看一個簡單的列子。
public class Sundae {
private Sundae(){
}
static Sundae makeASundae(){
return new Sundae();
}
}
public class IceCream {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Sundae sundea=Sundae.makeASundae();
}
}
這是一個說明private總有用武之地的示例:可能想控制如何建立物件,並阻止別人直接訪問某個特定的構造器。在上面的例子中,不能通過構造器來建立Sundae物件,而必須使用makeASundae()方法來達到目的。
protected:
關鍵字protected處理的是繼承的概念,通過繼承可以利用一個現有類-我們將其稱為基類,然後將新成員新增到該現有類中而不必碰該現有類。還可以改變該類的現有成員的行為。
Class A extends B,如果建立了一個新包,並自另一個包中繼承類,那麼唯一可以訪問的成員就是源包的public成員。(當然,如果在同一個包內執行繼承工作,就可以操縱所有的擁有包訪問許可權的成員。)有時,基類的建立者會希望有某個特定成員,把對它的訪問許可權賦予派生類而不是所有類。這就需要protected來完成這一個工作。protected也提供包訪問許可權,也就是說,相同包內的其他類可以訪問protected元素。