Java中,可以使用用访问修饰符来保护对类、变量、方法、构造方法的访问。Java支持四种不同的访问权限。
- public:公共的,项目中的任何地方都是可以访问的,修饰对象:类、变量、方法和接口。
- protected:受保护的,同一包内和所有子类都可以访问,修饰对象:变量和方法。
- default :缺省(不写),同一包内可以访问,修饰对象:类、对象、方法和接口。
- private:私有的,同一类中可以访问,修饰对象:变量和方法。
| 修饰符 | 同一个类中 | 同一个包中 | 同一包中的子类 | 不同包的子类 | 不同包中的非子类 |
| private | * | ||||
| default | * | * | * | ||
| protected | * | * | * | * | |
| public | * | * | * | * | * |
对于这四个修饰字,public和private很好理解也很好区别,而default和protected比较容易混淆。打个比方,就好比父母离异,子女判给了母亲,母亲带子女出国,入了外国籍,父亲和子女属于不同的国籍,但是由于有血缘关系,那么在默认情况下,父亲和子女是不能来往的,这就是缺省情况。但是,他们之间毕竟有血缘关系,父亲还是可以看望子女的,这就是protected。



