是否需要将私有嵌套类的内部声明为私有?
经过1000多年的private
private
,我发现它可能不需要
public class Outer { private static class Inner { // you may drop static private void innerMethod() {} } }
是否有任何情况从innerMethod()
中删除private
会在封装中产生差异(或者由Outer 使用 )? 想想也反思
如果不是 ,建议放弃它或保持它的编码风格吗?
我会说不,然后放弃但不确定。
编辑:刚才意识到我这样做的方式肯定是错的 – 至少对于Inner
的字段 – 将这些字段声明为私有然后在外部类中使用它们 – 因为这会在字节码中生成( “合成” )访问器 – 这是至少膨胀。 太棒了 – 所以现在我更感兴趣的是有一个关于声明那些( Inner
字段, Outer
使用的方法)包私有(或公共@JBNizet在评论中说)的安全含义的帐户
答案取决于您目前如何使用内部类。
我对内部课程的理念是减轻重构的负担。 我维护内部类的封装:内部类的private
方法和字段不能从外部类访问,即使它们可以。 因此,内部类的要点是将其范围缩小到仅包含类。 这样,如果以后内部类可以在其他地方重用,它几乎不需要工作(以及非static
内部类的大量工作)将其移动到自己的文件中。
以上是否是您的风格将影响以下原因:删除或保持方法/字段的private
。
private
的原因是:
- 外部类可以访问私有成员和内部类的方法,这意味着这些字段/方法并未真正封装
- 少打字
反对private
的原因是:
- 将内部类的方法设为
private
作为文档:外部类不应使用这些方法 - 如果保留
private
,则可以更容易地将内部类提升为自己的文件 - 如果
private
被删除,public
内部类和private
内部类有两种样式:程序员可以考虑更多 - 如果
private
被删除而内部类被public
,那么每个有权访问外部文件的人都可以访问内部类的私有数据
鉴于上述风格,我认为反对下跌的理由更强。