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

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

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

好吧也许不会马上。 但是,如果您(或将来)声明一个inheritance自package-private类的“protected”或“public”类,那么原始类成员的可见性就很重要。

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

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

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

包类中的公共方法对同一包中的类是公共的。 但是,同一个包中的类不能访问私有方法。