所谓访问权限,指的就是本类中的成员变量、成员方法对其他类的可见性
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也是可以的,这时可以随时对文件命名