所謂訪問權限,指的就是本類中的成員變量、成員方法對其他類的可見性
Java中有四種訪問權限,分別是public、protected、包訪問權限(默認)、private,如果省略了訪問修飾符,那默認訪問權限為包訪問權限。
這四種權限從最大權限到最小權限分別是:
public > protected > 包訪問權限> private
1.類的成員變量和方法訪問權限
包訪問權限: 沒有任何修飾符的權限就是包訪問權限,意味着當前包的所有類都可以訪問這個成員,如表中所示,對於本包之外的類,這個成員就變成了private,訪問不了
public: 被public修飾的成員對任意一個類都是可用的,任何一個類都可以訪問到,通過操作該類的對象隨意訪問public成員
protected: 和private作用相當,唯一的區別是,繼承的類可以訪問protected成員,但不能訪問private成員。
private: 除了包含這個成員的類之外,所有類都無法訪問這個成員,相當於自我封閉,防止其他類改變或刪除這個方法。private修飾的屬性或方法是私有的,不能在聲明它的類的外部訪問。
使用案例:
Animal實體類
public class Animal { //定義私有成員變量 private String name; private String age; //定義公有成員變量 public String address; public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getName() { return name; } public void setName(String name) { this.name = name; } public void setAge(String age) { this.age = age; } public String getAge() { return age; } public String getNameAndAge(){ //類內部可以訪問私有成員變量 return "name:"+name+"; age:"+age; } private void eat(){ System.out.println(name+"正在吃飯...."); } }
測試代碼:
public class SeasonTest { public static void main(String[] args) { Animal animal=new Animal(); animal.setAge("12"); animal.setName("peter"); animal.setAddress("tiantai"); System.out.println("age:"+animal.getAge()); System.out.println(animal.getNameAndAge()); System.out.println("address:"+animal.address); //通過類的對象訪問類的公有成員變量(public修飾) //System.out.println(animal.name); //animal.eat(); } }
2.類的訪問權限
Java中的訪問權限也可以用來修飾類。不過需要注意,對於普通類而言,類的訪問權限僅有public和包訪問權限
· 如果一個類聲明的時候用了public,則該類的類名必須與文件名一致,包括大小寫,如果不匹配,會有編譯錯誤
· 每個編譯單元(文件)都只能有一個public類
· 當然不帶public也是可以的,這時可以隨時對文件命名