最后一个关键字,最后一个块和java中的finalized方法之间的区别就是一个很好的例子

Mit*_*ari -1 java final finally finalize

通常这些关键字让我感到困惑.

谁能告诉我他们到底有什么区别?

Mic*_*gue 8

最终关键字

在课堂上,这意味着你禁止有一个扩展你的子课程.

public final class finalClass
Run Code Online (Sandbox Code Playgroud)

属性/字段

final MyObject value = new MyObject() 意味着您将无法修改对象的实例.

value = xxxx 将不被允许,但您仍然可以修改对象本身 value.field = "xxx";

方法方法上使用final时,这意味着您将禁止扩展类的子类以覆盖此方法.

public final void finalMethod()
Run Code Online (Sandbox Code Playgroud)

它也可以用在参数上,这意味着你不允许其他人修改你给出的对象的实例.

public void myMethod(final MyObject myObject)
Run Code Online (Sandbox Code Playgroud)

最终用户将无法做到 myObject = ...


最后阻止

finallyblock与此无关final,它在捕获Exception时使用,以确保在没有异常的情况下运行部分代码.

try { ...}
catch {} // Optional
finally { // Code that will be ran, exception or not being thrown}
Run Code Online (Sandbox Code Playgroud)

最后在Java中


完成方法

当它被销毁时(通常是垃圾收集),它会被调用.