四种修饰符修饰变量
修饰符 public > protected > (default) > private
同一个类(我自己) Yes Yes Yes Yes
同一个包(我邻居) Yes Yes Yes No
不同包子类(我儿子) Yes Yes No No
不同包非子类(陌生人)Yes No No No
事例:
同一个类:可以调用四种修饰符的变量
public class four {
public int a;
protected int b;
int c;
private int d;
public four(){
}
public void show(){
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
}
}
同一个包:除了private修饰的变量不能直接调用,其他都可以通过创建对象直接调用
public class one { public one(){ } public void show(){ System.out.println(new four().a); System.out.println(new four().b); System.out.println(new four().c); } }
不同包子类:只用public和protected修饰的变量可以通过super关键字直接调用
public class test extends four{ public test(){ } @Override public void show() { System.out.println(super.b); System.out.println(super.a); } }
不同包非子类:只用public修饰的变量可以通过创建对象直接调用
public class test2 {
public test2(){
}
public void show(){
System.out.println(new four().a);
}
}
四种修饰符修饰类
public > protected > (default) > private
定义一个类的时候,权限修饰符规则:
1.外部类:public / (default)
2.成员内部类:public / protected / (default) / private
3.局部内部类:什么都不能写。
//外部类 public class test2 { //成员内部类 public class oNo{ } private class oWo{ } protected class oIo{ } class oUo{ } public void method(){ //局部内部类 class mom{ } } } //外部类 class oNo{ }