如果我在只有包可见性的类中创建所有static
方法public
,是否会出现问题?我不希望方法可以在包外部访问,除非我将类可见性更改为公开,在这种情况下我做希望它们全部可见而不必单独公开。
在使static
类不满足上述要求时,是否会使所有public
方法public
生效?
更新/澄清:作为澄清,static
方法是工厂方法,因此我希望任何可以查看该类的人都可以使用它们。这就是为什么我希望将它们保持在最大可见度(而不是通常建议的最小可见度),以便任何可以看到该类的人都可以看到它们。当类可见性扩展时,我不必寻找并找到静态方法来改变它们的可见性。我想要一个翻转开关。
答案 0 :(得分:2)
是。这是访问修饰符的常规用例。在具有包可见性的类中使用公共方法没有任何问题。
但是,“所有”静态方法无需公开。对于内部/实现特定的任务,您仍应使用私有和受保护的方法。
我们的想法是首先尽可能减少可访问性,然后在需要时公开它们。通过'可达性最小'我的意思是只有综合效果。只要效果相同,无论如何实现。唯一的另一个考虑因素是返工...当你最终公开这个类时,你想要这些方法是否可见?如果是,您最好将这些方法保持公开。
请注意,对于静态方法,效果是相同的'。但是对于实例方法,子类将能够提供对包级别类中的公共方法的访问。所以在这种情况下效果会不一样。
答案 1 :(得分:1)
通常作为设计原则,任何方法或实例变量的访问修饰符都应具有相同或较窄的可见性(访问修饰符)。