学过java 的人都知道 java 有四个作用域 , 他们就是 public , private , protected , default 。
经常看到网上很多java面试题集锦里面的第一道题就是 关于java 的作用域,面试题集锦里的答案如下 :
0、作用域public,private,protected,以及不写时(不写时默认为friendly)的区别
答:区别如下:
作用域 | 当前类 | 同一package | 子孙类 | 其他package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
觉得上面的分类不够细 ,经过代码测试 , 测试结果如下 。
作用域 | 当前类 | 同包子孙类 | 同包类 | 不同包子孙类 | 不同包类
public √ √ √ √ √
protected √ √ √ √ ×
friendly √ √ √ × ×
private √ × × × ×