如果我有一个包含私有的java类(用“class”声明,而不是“public class”),如果里面的方法被声明为public或protected或package-private,那么确实没有区别,对吧?那么我应该使用哪种,或者何时应该使用哪种?我有点困惑。
答案 0 :(得分:18)
如果我有一个包含私有的java类(用“class”声明,而不是“public class”),如果里面的方法被声明为public或protected或package-private,那么确实没有区别,对吧? / p>
好吧也许不会马上。但是,如果您当时(或将来)声明继承自package-private类的“受保护”或“公共”类,则原始类的成员的可见性很重要。< / p>
正如@kmccoy指出的那样,将类声明为final可以消除子类的可能性。
但这真的只是门面装饰。如果您确定您确实需要创建子类,则只需删除final
...然后您就会回到访问修饰符选择很重要的情况。
IMO,最重要的是你应该选择最合适的修饰符......即使现在没有必要。如果不出意外,您选择的修饰符应记录您对抽象边界所在位置的意图。
答案 1 :(得分:4)
包类中的公共方法对同一包中的类是公共的。但是,同一个包中的类将无法访问私有方法。