在下面的代码中,我得到了输出 Hello。谁能解释为什么编译器没有报告错误,因为我在类和继承链之外调用了一个 protected 函数。
package sampleproject;
public class SampleProject
{
public static void main(String[] args)
{
Sample s=new Sample();
s.finalize();
}
}
class Sample
{
@Override
protected void finalize()
{
System.out.println("Hello");
}
}
谢谢。
最佳答案
protected
范围包括包,以及类和子类。您的两个类都属于同一个包。
顺便说一句,我希望你不打算调用 finalize()
。这应该留给垃圾收集器(并且不依赖于任何一个!)。参见 this answer了解更多信息。
关于java - 我怎样才能调用 finalize(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12835278/