[英]Why calling super.finalize() is preferred when overriding finalize() method?
[英]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
}
是的,即使您没有使用自己的实现覆盖它, finalize()
方法仍将运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.