java中有public,protected,default(默认),private 四种访问权限。
具体的访问限制如下:
同一个类 | 同一个包 | 不同包的子类 | 不同包的非子类 | |
Private | √ | |||
Default | √ | √ | ||
Protected | √ | √ | √ | |
Public | √ | √ | √ | √ |
需要注意的是,private和protected只能修饰内部类而不能修饰外部类。
究其原因的话:
首先,private因为只有自己能访问,所以如果是外部类,则没法调用这个类,那么它存在就没有了意义,所以,用private修饰外部类会编译出错;
其次,由于protected的类可以在本包内访问,同时可以被其他包里的子类所访问,而它的子类又可以被本包内的访问,所以这个类也将被间接的借助子类所访问到,所以protected的范围将没有意义,所以同样不能修饰外部类
而,如果是内部类,可以用private和protected修饰,可以通过外部类的对象进行访问。