当 Java 中的每个类都派生自 java.lang.Object 时,在 Object 类中使用 protected 方法的目的是什么? 它们将始终具有与公共(public)方法相同的可见性。是否有任何理由在 OpenJDK 实现中保护以下两个方法?
protected native Object clone() throws CloneNotSupportedException;
protected void finalize() throws Throwable { }
编辑:说明 new Object.finalize() 的评论是我能预料到的最佳答案! ..谢谢
对于那些区分 protected 和公共(public)的可访问性的人
package pkg1;
public class Parent{
protected void fun(){}
}
package pkg2;
public class child extends pkg1.Parent{
void fun2()
{ child ch=new child();
ch.fun(); // Accesses protected method (For this class protected /public is irrelevant in terms of accessibility
Parent p=new Parent();
//p.fun(); //can't do this
}
}
最佳答案
控制类中元素的“可见性”很重要。 (参见语言 tutorial here)
作为快速总结,请考虑:
private
东西只对它们所在的class
可见no modifier/default
仅对类
和该类所在的package
可见protected
事物对packages
、class
ANDsub-classes
可见
public
事物对package
、class
、sub-classes
和 world 可见
关于java - 在 java.lang.Object 类中使用 protected 方法的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22155092/