我用另一个问题回答您的问题:
为什么
finalize方法不应该受到保护?
通常,您应该尝试使事物尽可能私密。这就是封装的全部意义所在。否则,您 什么都
可以做
public。
finalize不能
private(因为派生类应该能够访问它以覆盖它),所以它至少应该是,
protected但是为什么在不希望使用时给予更多访问权限呢?
在更仔细地阅读了您的评论之后,我想我现在明白了您的要点。我觉得你的意思是,因为从一切导出
java.lang.Object,因此访问其
protected成员,它不会做它(或以任何方式任何区别
java.lang.Object为此事)是
public相对于
protected。我个人认为这是Java的设计缺陷。这确实在C#中已修复。问题不是为什么
finalize要受到保护。没关系。真正的问题是您不应该能够通过基类类型的对象引用来在基类中调用受保护的方法。



