学c++的时候,记得一个类的protected 成员不能在类外被访问,以为java也是一样,没想到是错的。今天在验证java中有关覆盖的3个原则时才发现类的default(默认)访问类型的成员可以在类外访问(条件是同包),突然想起老师上课时讲的default类型的成员的访问范围是protected的子集,那么protected类型的成员不也能在类外访问了吗?这与以前的想法矛盾,赶紧编了个小程序测试了下,protected类型的成员果然可以在类外访问,纠正了一个错误。作用域访问权限总结如下:
作用域 当前类 同一package 子孙类 其他package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
默认 √ √ × ×