先看下面表格:
作用域
|
当前类 |
同一package |
子孙类
|
其他package |
public |
√
|
√
|
√
|
√
|
protected
|
√
|
√
|
√
|
×
|
default |
√
|
√
|
×
|
× |
private |
√
|
×
|
×
|
×
|
不写时默认为default
我们先看类:
public class Test 可以在任何地方访问,无论是否为当前package
class Test 只允许当前的package使用,不允许其它package使用
class 不与许prirvate和protected ,所以不讨论了
我们再看方法
private 的只允许类自己使用,子类都不可见。但允许inner类调用,因为inner类属于他自己。
class Test 里面的方法
public 和default和protected 方法,允许同包的访问,因为类是default的,所以方法不可能大于它
public class Test 里面的方法
private 只允许自己内部访问
default 只允许同包的访问
protected 只允许同包和子类访问
public 可以任意访问