一、默认访问修饰符
可以用来修饰类、接口、变量、方法。在同一包内可见,不使用任何修饰符,即缺省,可以不写。
public class Animal {
//此方法同一包内可见
void eat() {
System.out.println("Animal is eating.");
}
}
注意:接口里的变量都隐式声明为 public static final,而接口里的方法默认情况下访问权限为 public。
二、私有访问修饰符(private)
用来修饰变量和方法。私有访问修饰符是最严格的访问级别,所以被声明为 private 的方法、变量和构造方法只能被所属类访问,并且类和接口不能声明为 private。声明为私有访问类型的变量只能通过类中公共的 getter 方法被外部类访问。
private 访问修饰符的使用主要用来隐藏类的实现细节和保护类的数据。
public class Test{
//这两个变量只能被本类访问
private String username;
private String password;
public Test(String username, String password){
this.username = username;
this.password = password;
}
}
三、公共访问修饰符(public)
用来修饰类、接口、变量、方法。被声明为 public 的类、方法、构造方法和接口能够被任何其他类访问。
如果几个相互访问的 public 类分布在不同的包中,则需要导入相应 public 类所在的包。由于类的继承性,类所有的公有方法和变量都能被其子类继承。
public class Animal {
//可以被任何类访问
public void eat() {
System.out.println("Animal is eating.");
}
}
四、受保护的访问修饰符(protected)
修饰变量和方法,特别注意不能修饰类。
- 子类与基类在同一包中:被声明为 protected 的变量、方法和构造器能被同一个包中的任何其他类访问;
- 子类与基类不在同一包中:那么在子类中,子类实例可以访问其从基类继承而来的 protected 方法,而不能访问基类实例的protected方法。
public class Animal {
//只能被同一包中的其它类访问
protected int age;
protected double weight;
public Animal(int age, double weight) {
this.age = age;
this.weight = weight;
}
}
五、总结
修饰符 | 当前类 | 同一包内 | 子孙类(同一包) | 子孙类(不同包) | 其他包 |
---|---|---|---|---|---|
public | Y | Y | Y | Y | Y |
protected | Y | Y | Y | Y/N | N |
default | Y | Y | Y | N | N |
private | Y | N | N | N | N |
网友评论