在讲到访问控制这一节的时候,书上介绍完private,package,protected和public四种访问修饰符后,出现这样一句话:
You should view public and protected members as contractual, because they can be relied on by code you do not control. Changing them can be impossible after that code relies on public or protected functionality. Package and private access are part of your implementation, hidden from outsiders (classes in the same package should be related).大意大概是说:
你应该把public和protected的成员看作是一种协议,因为你无法控制的代码也可以依赖于他们。在那些代码依赖于public或者protected功能之后,就不可能再改变他们了。package和private访问权限是你的具体实现的一部分,并且隐藏于外界的(同一包中的类应该是相关的)。感觉这句话特别隐晦,特别难以理解,作者在此到底是想说明什么意思呢?什么叫做“依赖于protected或者public之后,就不可改变了”?什么又是“package和private访问权限是你的具体实现的一部分”?

解决方案 »

  1.   

    就是说,public和protected修饰的东东是你对其他程序员的承诺,一旦你定义了,别人就可以使用了,所以你就不能再更改(意思应该是删除,改实现还是可以的).就好象JDK有很多不推荐使用的方法一样,即使不推荐使用,但你还是能够用,因为要为在低版本开发的程序兼容,如果在高版本的JDK里面删除了这些方法,那么系统就无法升级JDK了.所以说这是一种framework程序员对应用开发程序员的承诺.而package和private修饰的东东则不一样,是你自己的底层实现,别人的代码里面是不可以使用的,所以你可以随便更改(当然,是不能影响到public和protected方法的前提下)
      

  2.   

    protected和public提供对外访问
    package和private实现具体功能