繁体   English   中英

最终方法会在没有覆盖的情况下运行吗?

[英]Will finalize method run without overriding it?

现在我知道这是一个愚蠢的问题,但是,finalize方法在对象类中定义为受保护,并且它将在我们的类中私有地继承。

并且我们知道finalize方法在对象被销毁之前运行,所以我的问题是,如果我们不覆盖它?它是否仍会以私有形式运行?

finalize方法在对象类中被定义为protected,它将在我们的类中私有地继承。

不,它不会作为私有继承到子类。

最终方法会在没有覆盖的情况下运行吗?

是的,它会运行,因为它是继承的。

您不能将finalize覆盖为私有。

如果你尝试,你会收到这个错误:

Cannot reduce the visibility of the inherited method from Object.

我认为您应该尝试了解有关访问修饰符的更多信息。 protected不会(也不会)变得private

这有效:

protected void finalize() throws Throwable {
    // something
}

这也有效:

public void finalize() throws Throwable {
    // something
}

这不起作用:

private void finalize() throws Throwable {
    // something
}

读一下这个答案: 在Java中,public,default,protected和private之间的区别是什么?

是的,即使您没有使用自己的实现覆盖它, finalize()方法仍将运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM