这里介绍一下Java中四种权限修饰符的区别和比较。
- private
- 默认
- protected
- public
话不多说,先用代码展示:
1. 先定义一个类Animal,然后在里面定义四个方法,分别使用不同权限修饰符。然后创建对象,测试能使用哪些方法。
public class Animal {
private void pri() {
System.out.println("private");
}
protected void pro() {
System.out.println("protected");
}
void vo() {
System.out.println("void");
}
public void pub() {
System.out.println("pub");
}
public static void main(String[] args) {
//创建对象,测试哪些方法可以使用
Animal a = new Animal();
a.pri();
a.vo();
a.pro();
a.pub();
}
}
说明本类中可以使用四种修饰的方法。
2. 在该包下建一个该类的子类,测试能使用哪些方法。发现除了private方法都能够使用
public class Cat extends Animal{
public static void main(String[] args) {
Cat c = new Cat();
c.pro();
c.vo();
c.pub();
}
}
3. 然后在该包下建立一个无关类测试方法,发现也是除了private方法其他方法都能使用。
public class person {
public static void main(String[] args) {
Animal a = new Animal();
a.pro();
a.pub();
a.vo();
}
}
4. 另建一个包,建一个Animal子类Dog类。测试发现只有protected和public方法能够使用。
public class Dog extends Animal {
public static void main(String[] args) {
Dog d = new Dog();
d.pro();
d.pub();
}
}
5. 最后在这包中建立一个无关类,发现只有public方法可以使用。
public class Car {
public static void main(String[] args) {
Animal a = new Animal();
a.pub();
}
}
最后总结起来如下:
修饰符 | 同一类中 | 同一包中的子类或无关类 | 不同包中的子类 | 不同包中的无关类 |
private | 可用 | |||
默认 | 可用 | 可用 | ||
protected | 可用 | 可用 | 可用 | |
public | 可用 | 可用 | 可用 | 可用 |