java - 在 java.lang.Object 类中使用 protected 方法的目的是什么?

标签 java openjdk

当 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)

作为快速总结,请考虑:

  1. private 东西只对它们所在的 class 可见
  2. no modifier/default 仅对和该类所在的package可见
  3. protected 事物对packagesclass AND sub-classes
  4. 可见
  5. public 事物对packageclasssub-classes 和 world 可见

关于java - 在 java.lang.Object 类中使用 protected 方法的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22155092/

相关文章:

java - 从 Action 名称 : Struts 2 获取 URL

java - 从java中的数组中提取不同的值

java - Apache FOP 作为 servlet 不更新图像

scala - sbt 不适用于亚马逊 ec2 微型实例

java - OpenJDK 和静态链接

java - 静态与新对象

java - 数字格式异常

gradle - 如何让 android studio (gradle) 使用 Sun/Oracle Java?

centos - 在 CentOS 上安装 jvisualvm

java - 如何隐藏 TieredCompilation 警告?