我对私有字段,变量和方法有疑问,如果我创建了一个包含私有变量和方法的类,那么我该如何使用,何时去私有成员,方法以及何时不使用?
答案 0 :(得分:2)
私有成员(方法也是成员)就是如何实现 Encapsulation ,这可能是面向对象编程中最重要的概念。
这个想法是区分具体的实现细节和抽象的接口。抽象接口指定了一个类所做的什么,它被其他类使用,不应经常更改。这就是公共成员的目的。
另一方面,私人成员是实施细节:其他类不应该使用甚至不知道它们,因为它们可能会更频繁地改变。
答案 1 :(得分:1)
私有 - 只有该特定类需要访问它们。课外没有任何东西可以看到或使用它们。
受保护 - 特定类和扩展该类的任何类都可以访问它们。不扩展成员类的类无法查看或使用它们。
公开 - 任何其他类都可以访问,查看和使用它们。
我今天了解到,如果你没有指定public / protected / private,那么Java也有另一个隐含的访问级别。这称为“包私有”,意味着同一个包中的类可以访问成员,但包外没有类可以。
This page也可能会帮助你。
答案 2 :(得分:1)
您应该始终为类的成员提供最严格的可见性级别。您可以在该类中包含的任何方法中使用类的私有成员。
答案 3 :(得分:1)
只能从班级内部访问私人会员。这非常有用,可以避免污染类的API。如果将方法声明为public,则每个外部类都可以使用它并依赖于它。如果你想改变代码,稍后你就会破坏代码。如果它是私有的,则更改仅限于类本身。
答案 4 :(得分:0)
应用于Java时的封装原则(粗略地)表明字段应该是私有的,并且getXXX()和setXXX()方法可以访问这些值。
私有方法是仅在其所在类内部的方法,并且在该类之外没有用处。
答案 5 :(得分:0)
选择访问级别的提示:如果其他程序员使用您的课程, 你想确保来自的错误 滥用不可能发生。访问级别 可以帮你做到这一点。使用最多 限制性访问级别 特定成员的感觉。
- 使用
private
除非你有充分的理由 不要。- 避免
public
字段除外 常量。 (很多例子都在 本教程使用公共字段。这个 可能有助于说明一些观点 简明扼要,但不推荐 生产代码。)公共领域倾向于 把你链接到一个特定的 实施并限制你的 更改代码的灵活性。
答案 6 :(得分:0)
如果为Connection方法写单独的JDBC类作为私有发生的事情。所以无法在班级deff中使用该连接方法......
答案 7 :(得分:0)
只有私有成员和方法的类是一个不可迁移的类,这使它成为Map中键的一个很好的候选者。但是,您需要提供非私有构造函数并正确覆盖hashCode
和equals
方法。
答案 8 :(得分:0)
公共成员和受保护成员是您的类导出API的一部分。私有和所谓的包私有访问级别是内部实现的一部分。
默认情况下,您应该使用尽可能低的访问级别 - 私有,然后使用包私有 - 除非您有充分的理由不这样做。我注意到一些开发人员默认使用protected。不建议这样做,因为受保护是API的一部分,外部包中的类可以使用,如果它们能够扩展您的类。如果你没有预料/设计你班级的延期,这可能会导致不幸的副作用。
参见Effective Java,2nd Ed。为了更好的解释:
第13项:尽量减少班级和成员的可访问性
第17项:继承的设计和文件,否则禁止它
引用:
“区分精心设计的模块与设计模块的最重要因素 设计不合理的是模块隐藏其内部数据的程度 其他模块的其他实现细节。“
答案 9 :(得分:0)
我认为你现在已经有了足够多的答案。您的问题让我知道您只是开始使用语言,我强烈建议您获取Joshua Bloch “Effective Java”的副本,他不仅解释了语言的作用,而且更重要的是如何有效地使用它。在这种情况下,为什么选择私人会员而不是包裹,公共或受保护的会员。此致