在private
中经过1000秒的private
后,我突然想到可能不需要
public class Outer {
private static class Inner { // you may drop static
private void innerMethod() {}
}
}
是否存在从innerMethod()
中删除private
会对封装产生影响的任何情况(或者使用,例如Outer)?思考反思
如果不是,建议将其删除还是保留为vis编码样式?
我会说不和放弃,但真的不确定。
EDIT:刚刚意识到I这样做肯定是错误的-至少对于Inner
的字段-声明这些字段为私有字段,然后在外部类中使用它们-因为这会在字节码中生成("合成")访问器-这至少是膨胀的。太好了,所以现在我更感兴趣的是了解声明这些(Inner
的字段,Outer
中使用的方法)包私有(或公共,如@JBNizet在评论中所说)
答案取决于当前如何使用内部类。
我对内部类的理念是减轻重构的负担。我维护内部类的封装:内部类的private
方法和字段不能从外部类访问,即使它们可以访问。因此,内部类的目的是将其范围缩小到仅包含类。这样,如果以后可以在其他地方重用内部类,那么将其移动到自己的文件中几乎不需要任何工作(对于非static
内部类也只需要少量的工作)。
无论以上是否为您的风格,都会影响以下删除或保留方法/字段周围的private
的原因。
丢弃private
的原因是:
- 外部类可以访问内部类的私有成员和方法,这意味着这些字段/方法并不是真正封装的
- 小于类型
不放弃private
的原因是:
- 使内部类
private
的方法成为文档:外部类不应该使用这些方法 - 如果保留
private
,则可以更容易地将内部类提升为自己的文件 - 如果删除
private
,则public
内部类和private
内部类有两种样式:更多供程序员考虑 - 如果
private
被丢弃,而内部类被设为public
,那么突然间,所有有权访问外部文件的人都可以访问内部类的私有数据
鉴于上述风格,我认为反对放弃的理由更充分。