【问题标题】:Java - Method accessibility inside package-private class?Java - 包私有类中的方法可访问性?
【发布时间】:2010-11-23 22:11:20
【问题描述】:

如果我有一个包私有的 java 类(声明为“类”,而不是“公共类”),那么如果将其中的方法声明为公共或受保护或包私有,真的没有区别,对吧?那么我应该使用哪个,或者我应该什么时候使用哪个?我有点困惑。

【问题讨论】:

    标签: java class methods accessibility public


    【解决方案1】:

    如果我有一个包私有的 java 类(用“类”声明,而不是“公共类”),如果里面的方法被声明为公共或受保护或包私有,真的没有区别,对吧?

    嗯,也许不会马上。但是,如果您当时(或将来)声明了一个从包私有类继承的“受保护”或“公共”类,那么原始类的成员的可见性确实很重要。

    正如@kmccoy 指出的那样,将类声明为final 消除了子类的可能性。

    但这实际上只是装点门面。如果您随后决定确实需要创建子类,则只需删除 final ... 然后您就会回到访问修饰符的选择很重要的情况。

    IMO,最重要的是你应该选择最合适的修饰符......即使现在没有必要。如果不出意外,您选择的修饰符应该记录您对抽象边界所在位置的意图。

    【讨论】:

    • 如果类是final class SomeClass,那么成员可见性是否重要?
    • 如果 final 修饰符在未来的重构中被移除 :) 请记住这是软件,“final”并不意味着“一成不变”,它的意思是“不能派生子类从现在写的这种类型开始。”
    【解决方案2】:

    包类中的公共方法对同一包中的类是公共的。但是,同一包中的类将无法访问私有方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-22
      • 1970-01-01
      • 2014-06-05
      • 2013-05-25
      • 2018-05-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多