在下面的代码中,我得到了输出Hello。有人能解释为什么编译器没有报告错误吗?我在类和继承链之外调用了一个受保护的函数。
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");
}
}谢谢。
发布于 2012-10-11 16:29:48
protected作用域包括包以及类和子类。这两个类都是同一个包的一部分。
我希望你不是想打电话给finalize(),顺便说一句。这应该留给垃圾收集器(而不是依赖于)。都不是!)。有关详细信息,请参阅this answer。
发布于 2012-10-11 16:30:12
protected使方法在同一个包中可见
这可能会有帮助:Controlling Access to Members of a Class
发布于 2012-10-11 16:30:24
protected成员只能由其自己的类、该类的子类或同一包中的类的成员访问。
来自here
https://stackoverflow.com/questions/12835278
复制相似问题