现在我知道这是一个愚蠢的问题,但是,finalize方法在对象类中定义为受保护,并且它将在我们的类中私下继承。
并且我们知道finalize方法在对象被销毁之前运行,所以我的问题是,如果我们不覆盖它?它是否仍然以私有形式运行?
答案 0 :(得分:1)
finalize方法在对象类和它中被定义为受保护 将在我们班上私下继承。
不,它不会作为私有继承到子类。
在没有覆盖的情况下完成方法运行吗?
是的,它会运行,因为它是继承的。
答案 1 :(得分:1)
您无法将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
}
阅读这个答案:In Java, what's the difference between public, default, protected, and private?
答案 2 :(得分:0)
是的,即使您没有用自己的实现覆盖它,finalize()
方法仍然会运行。