访问权限修饰词(access specifier),控制其他的类访问本类成员的级别,先看下面的例子:
PrivateTest.java
class A{
 private int i=1;
 int s=0;
 private void print(){
  System.out.println(i);
 }
}

public class PrivateTest{
 public static void main(String[] args){
  A a=new A();
  //System.out.println(a.i);
  System.out.println(a.s);
  //a.print();
 }
}

从输出结果可以看到,System.out.println(a.i);不能通过编译,如果print设置为public的话a.print();可以通过编译并且输出正确的结果。也就是说在A类中看不到B类的private变量的,但是A引用B类的public成员函数,而这个函数用到了B中的private变量是没有问题的。

如果,对于继承自己的class,认为是自己的子女,而对于和自己一个目录下的classes,认为是自己的朋友,那么
1、public:表明该数据成员、成员函数是对所有人开放的,所有人都可以直接进行调用;
2、private:表示私有,私有的意思就是除了自己之外,任何人都不可以直接使用;
3、protected:protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private;
4、类本身只能是public或者默认的,不能是private和protected的;
5、这里说的直接使用是指可以在其他类中使用本类的对象进行调用(成员数据和成员函数)。

作用域           当前类       同一package     子孙类        其他package
public             √              √                √               √
protected        √              √                √              ×
friendly           √              √                ×               × (默认为friendly,没有这个修饰词)
private            √              ×                ×               ×