【java基础】访问权限修饰符
访问修饰符
通过控制方法、属性的不同访问权限,对外部暴露必要的接口,提供给客户程序员使用。将外部的功能和内部实现分隔。客户程序员无需关心内部实现。
这样在以后修改内部的具体实现细节(比如HashMap的优化),不会影响到客户程序员的使用。
public
所有的包都可以访问public属性
protected
只有同一个包下的类可以访问,或者虽然不在同一包下,但是继承父类,就可以访问到protected属性。
friendly
必须在同一个包下,才能访问到默认属性。即使不在同一个类也可以访问到。
private
只能在当前类下能够访问
可结合如下代码理解
package study.basic.demo01;
public class Person {
public String publicName;
protected int protectedAge;
int fridenlyHight;
private String privateId;
public static void main(String[] args) {
Person person = new Person();
person.publicName="json";
person.protectedAge=12 ;
person.fridenlyHight=180;
person.privateId="123123";//在同一个包下的同一个类,所有属性都可以访问到
}
}
class Jake{
public static void main(String[] args) {
Person person = new Person();
person.publicName="jake";
person.protectedAge=23;
person.fridenlyHight=172;//在同一个包下,但不是同一个类。可以访问到friendly
}
}
package study.basic.demo02;
import study.basic.demo01.Person;
public class Animal {
public static void main(String[] args) {
Person person = new Person();
person.publicName="jane";//不在同一个包下,只能访问到 public
}
}
class Tom extends Person{
public static void main(String[] args) {
Tom tom = new Tom();
tom.publicName="tom";
tom.protectedAge=12;//不在同一个包下,但是继承了person类,可以访问到protected
}
}