对私人成员和方法的怀疑

时间:2010-04-09 13:12:57

标签: java

我对私有字段,变量和方法有疑问,如果我创建了一个包含私有变量和方法的类,那么我该如何使用,何时去私有成员,方法以及何时不使用?

10 个答案:

答案 0 :(得分:2)

私有成员(方法也是成员)就是如何实现 Encapsulation ,这可能是面向对象编程中最重要的概念。

这个想法是区分具体的实现细节和抽象的接口。抽象接口指定了一个类所做的什么,它被其他类使用,不应经常更改。这就是公共成员的目的。

另一方面,私人成员是实施细节:其他类不应该使用甚至不知道它们,因为它们可能会更频繁地改变。

答案 1 :(得分:1)

私有 - 只有该特定类需要访问它们。课外没有任何东西可以看到或使用它们。

受保护 - 特定类和扩展该类的任何类都可以访问它们。不扩展成员类的类无法查看或使用它们。

公开 - 任何其他类都可以访问,查看和使用它们。

我今天了解到,如果你没有指定public / protected / private,那么Java也有另一个隐含的访问级别。这称为“包私有”,意味着同一个包中的类可以访问成员,但包外没有类可以。

This page也可能会帮助你。

答案 2 :(得分:1)

您应该始终为类的成员提供最严格的可见性级别。您可以在该类中包含的任何方法中使用类的私有成员。

答案 3 :(得分:1)

只能从班级内部访问私人会员。这非常有用,可以避免污染类的API。如果将方法声明为public,则每个外部类都可以使用它并依赖于它。如果你想改变代码,稍后你就会破坏代码。如果它是私有的,则更改仅限于类本身。

答案 4 :(得分:0)

应用于Java时的封装原则(粗略地)表明字段应该是私有的,并且getXXX()和setXXX()方法可以访问这些值。

私有方法是仅在其所在类内部的方法,并且在该类之外没有用处。

答案 5 :(得分:0)

来自Sun tutorials

  

选择访问级别的提示:如果其他程序员使用您的课程,   你想确保来自的错误   滥用不可能发生。访问级别   可以帮你做到这一点。使用最多   限制性访问级别   特定成员的感觉。

     
      
  • 使用   private除非你有充分的理由   不要。
  •   
  • 避免public字段除外   常量。 (很多例子都在   本教程使用公共字段。这个   可能有助于说明一些观点   简明扼要,但不推荐   生产代码。)公共领域倾向于   把你链接到一个特定的   实施并限制你的   更改代码的灵活性。
  •   

答案 6 :(得分:0)

如果为Connection方法写单独的JDBC类作为私有发生的事情。所以无法在班级deff中使用该连接方法......

答案 7 :(得分:0)

只有私有成员和方法的类是一个不可迁移的类,这使它成为Map中键的一个很好的候选者。但是,您需要提供非私有构造函数并正确覆盖hashCodeequals方法。

答案 8 :(得分:0)

公共成员和受保护成员是您的类导出API的一部分。私有和所谓的包私有访问级别是内部实现的一部分。

默认情况下,您应该使用尽可能低的访问级别 - 私有,然后使用包私有 - 除非您有充分的理由不这样做。我注意到一些开发人员默认使用protected。不建议这样做,因为受保护是API的一部分,外部包中的类可以使用,如果它们能够扩展您的类。如果你没有预料/设计你班级的延期,这可能会导致不幸的副作用。

参见Effective Java,2nd Ed。为了更好的解释:

第13项:尽量减少班级和成员的可访问性

第17项:继承的设计和文件,否则禁止它

引用:

“区分精心设计的模块与设计模块的最重要因素 设计不合理的是模块隐藏其内部数据的程度 其他模块的其他实现细节。“

答案 9 :(得分:0)

我认为你现在已经有了足够多的答案。您的问题让我知道您只是开始使用语言,我强烈建议您获取Joshua Bloch “Effective Java”的副本,他不仅解释了语言的作用,而且更重要的是如何有效地使用它。在这种情况下,为什么选择私人会员而不是包裹,公共或受保护的会员。此致