在Java中继承保护与公共

这个问题在这里已经有了答案:

  • 在Java中,封装私有,公共,受保护和私有26个答案之间的区别

  • 你应该遵循最低特权原则。

    这意味着应为成员分配程序工作所需的最小可访问性。

    如果一个不相关的类需要访问,请将其public 。 通常,这只对提供对数据的托管访问的方法来完成。

    如果要完全信任子类来操作数据,并且它需要它正常工作,则可以使该成员protected

    否则,将其设为private ,所以没有其他类可以访问它(不需要通过其他更易于访问的方法来封装数据)。

    如果您的程序在protected时运行良好,则不要public 。 考虑使用private访问它的protected方法来更好地封装数据。


    回想一下这些访问修饰符正在做什么。

    public字段是任何使用此类的类都可以修改的字段。

    protected字段是类,其子类和相同包中的类可以访问的字段。

    取决于您的数据封装的内容,更改这些字段的可见性涉及更大的风险。 我强烈建议不要这些声明。


    只有当你希望你的变量或方法被该超类的子类访问或覆盖,但你不希望该变量或方法在超类或子类之外被访问(即公开)时,才使用超类中的保护。

    当你希望你的变量或方法被任何类访问时使用public。 请注意,您应该很少有公共的非最终变量或公共可变变量。

    如果一个程序运行没有任何问题与保护访问修饰符集是否有任何需要将其更改为公共?

    不,请为您的变量和方法使用访问权限最小的修饰符。 因此,如果他们不需要公开,不要将其公诸于众,只有在需要保护时才会受到保护(即受到子类的要求)。 否则,让他们私密。

    有关此背后的推理,请参见Joshua Bloch在Effective Java中的“项目13:最小化类和成员的可访问性”部分:http://uet.vnu.edu.vn/~chauttm/e-books/java/Effective .Java.2nd.Edition.May.2008.3000th.Release.pdf

    链接地址: http://www.djcxy.com/p/24055.html

    上一篇: Protected vs Public in terms of Inheritance in Java

    下一篇: Why cant i use protected constructors outside the package?