访问权限排序 public>proteced>包间访问权限(缺省关键字的)>private
在一个java文件中,必须要有一个和文件名一致的public 类,可以有多个并行的的包间可见的class(这个class不能包含任何修饰),除了本包范围,都不可见.一般他们提供为主public 类引用.为什么不能有private并行类?因为private 类主要是内部类,因为该类并不处于主class的内部,所以private 无意义.
6.2java 访问权限修饰词
默认包: class文件没有package 关键字,一般放在工作目录的根目录下,能够正常运行.如果在同一个目录下有多个默认包,可以允许包间访问(因为没有注明包名,只能在当前文件夹没访问).代码中是不能获取package信息.
默认包可以继承其他不同包的类.
Protected 关键字,允许子类访问,同样也允许包内访问.跨包范围无法访问.
但是如果一个子类是跨包的情况下,是否允许调用基类的protected方法呢?答案是可以的.
对于继承的访问权限,如果基类有一个方法,或成员变量为包间权限,那么子类如果不在同一包内是无法访问的.
6.4类的访问权限
1.每个编译单元(java文件)只能有一个public 类,可以有多个包间访问类(缺省修饰符)
2.虽然不常用,可以允许一个java文件类没有public类(缺省类)
3.单独类既不可以protected 也不可private(除了内部类)作为class的修饰
控制对成员的控制权限主要有两个原因:
1.为了让用户不要触碰那些他们不该触碰的部分.这些部分对于类内部操作是必须的,但不属于对外提供接口的一部分.也就是定义成 private
2.第二个也是最重要的原因,为了让类库设计者可以更改类的内部工作方式,而不会造成对客户端调用产生重大影响.主要体现对类的部分方法可以更改,或者重写,或者实现以达到比之前更高效的效果.