Java - 包私有类中的方法可访问性?

mk1*_*k12 10 java methods accessibility class public

如果我有一个java类,它是package-private(用"class"声明,而不是"public class"),如果里面的方法被声明为public或protected或package-private,那么确实没有区别,对吧?那么我应该使用哪种,或者何时应该使用哪种?我有点困惑.

Ste*_*n C 18

如果我有一个java类,它是package-private(用"class"声明,而不是"public class"),如果里面的方法被声明为public或protected或package-private,那么确实没有区别,对吧?

好吧也许不会马上.但是,如果之后(或将来)宣布"保护"或"公众"类,从包私有类继承,那么原始类的成员的可视性没关系.

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

但这真的只是门面装饰.如果您确定您确实需要创建子类,则只需删除final...然后您将回到访问修饰符选择无关紧要的情况.

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

  • 如果在将来的某些重构中删除了最终修饰符:)记住这是软件,"最终"并不意味着"一成不变",这意味着,"无法从这种类型派生出一个子类,因为它是正确的现在." (2认同)