10

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

4

2 回答 2

18

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

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

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

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

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

于 2009-08-29T01:50:53.543 回答
4

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

于 2009-08-29T01:50:27.350 回答