1. 程式人生 > >關於private、protected、public訪問許可權問題

關於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元素。