【发布时间】:2010-11-23 22:11:20
【问题描述】:
如果我有一个包私有的 java 类(声明为“类”,而不是“公共类”),那么如果将其中的方法声明为公共或受保护或包私有,真的没有区别,对吧?那么我应该使用哪个,或者我应该什么时候使用哪个?我有点困惑。
【问题讨论】:
标签: java class methods accessibility public
如果我有一个包私有的 java 类(声明为“类”,而不是“公共类”),那么如果将其中的方法声明为公共或受保护或包私有,真的没有区别,对吧?那么我应该使用哪个,或者我应该什么时候使用哪个?我有点困惑。
【问题讨论】:
标签: java class methods accessibility public
如果我有一个包私有的 java 类(用“类”声明,而不是“公共类”),如果里面的方法被声明为公共或受保护或包私有,真的没有区别,对吧?
嗯,也许不会马上。但是,如果您当时(或将来)声明了一个从包私有类继承的“受保护”或“公共”类,那么原始类的成员的可见性确实很重要。
正如@kmccoy 指出的那样,将类声明为final 消除了子类的可能性。
但这实际上只是装点门面。如果您随后决定确实需要创建子类,则只需删除 final ... 然后您就会回到访问修饰符的选择很重要的情况。
IMO,最重要的是你应该选择最合适的修饰符......即使现在没有必要。如果不出意外,您选择的修饰符应该记录您对抽象边界所在位置的意图。
【讨论】:
final class SomeClass,那么成员可见性是否重要?
包类中的公共方法对同一包中的类是公共的。但是,同一包中的类将无法访问私有方法。
【讨论】: