java中private,static,final,public,abstract关键字的使用模式

Tha*_*tiK 10 java verbosity keyword

除了抽象之外我知道所有这些都做了什么.我目前正在使用我认为的中学教育(我的高中是在一个糟糕的社区,因此我被选中)自学java.

但这些关键字的使用模式究竟是什么?我什么时候用?我什么时候省略它们?将'public'放在我的类前面使得每个使用它的类都需要一个新文件,如果我想创建一个单片源文件,我可以省略它吗?

我查阅的每一点信息都准确地解释了这些信息的作用,但没有清楚地说明我应该使用它们的时间/原因/位置.

提前谢谢,安东尼

Boz*_*zho 38

来源告诉我们这些关键字的含义是什么,因为何时/为何/使用它们的地方就是这样.例如,我的解释有"when"这个词,但它们直接遵循关键词的语义.

  • private 当在某个特定类之外没有使用某些东西时应该使用它
    • 对于方法和字段 - 当它们仅在同一个类中使用时
    • 对于类 - 仅在嵌套类上使用时,在同一个类中使用
  • protected 应该在什么时候使用
    • 对于方法和字段 - 当您需要使它们仅对子类可访问时
    • 对于类 - 再次只有嵌套类,可以通过子类访问
  • public 在每个其他类都可以访问某些内容时使用

以上三个是"能见度修正".当您想要将某些方法/字段/类的使用限制为一组对象,并将它们与其他对象隐藏时,可以使用它们.还有另一个可见性修饰符 - 默认修饰符(当没有其他可见修饰符时).当您希望只能从同一个包中的类访问您的类/方法/字段时,可以使用它.

  • static 当您不需要类(即对象)的实例来使用它时使用:
    • 对于字段 - 当您想拥有全局字段时
    • for methods - 当您需要不依赖于对象状态的实用程序函数时
    • 对于嵌套类 - 当您想要在没有封闭类的实例的情况下访问它们时.
  • abstract 当您不想在当前类中提供实现时:
    • on methods - 当子类必须提供实际的实现时,但是你想在这个类中调用这些方法(无论它们是如何实现的).
    • 在类上 - 表示该类可能有抽象方法.
  • final - 当你不想改变什么时.
    • 在字段上,当您只想分配一次值时.想要将局部变量传递给内部类时,它非常有用 - 您必须将其声明为final.
    • 关于类和方法 - 当您不希望子类能够扩展/覆盖它们时.


Jam*_*ery 10

对于初学者,这是我的经验法则:

  1. 公共:所有类都应该公开(这不是真的,但它非常接近).对于方法,请考虑一下您的电视机:您希望对电视所做的事情是"公开的".
  2. 私有:实施细节应该是私有的.想想你的电视机:如果电视的同类物品应该是私人的,那么功能是私密的,因为用户可以永久地弄乱电视,触电,等等.
  3. 受保护:暂时忽略这一点.
  4. 摘要:我在学习Java时读到的最好的例子是思考"鸟".Bird是抽象的,因此将采用"抽象"飞行方法.个别鸟类知道如何飞行(除非它们是企鹅 - 然后它们抛出UnsupportedOperationException).

我强烈建议你反对使用一个单片源文件的冲动.尝试保持方法短于一个屏幕,并且类别短于300行.

  • +1表示UnsupportedOperationException :-) (5认同)

wkl*_*wkl 6

Bozho很好地介绍了关键字的用法,但我要补充一点,如果你根本没有声明一个范围,你的范围就变成了包私有,这意味着与该类相同的包中的任何人都可以使用该类/方法.基本上,它是不是更加宽容private,但不只是少许可protected,如protected允许从包装外部访问.

有关'无修饰符'访问权限的信息:

我建议通过Java教程:

如果您想要更多地探索Java,还要看一下本书的问题: