首页 > 解决方案 > 重写 clone() 方法时,为什么需要将其声明为 public?

问题描述

在我正在阅读的一本 java 书籍中,一个练习程序采用 Object 类中受保护的 clone() 方法并覆盖它。当他们这样做时,他们会将可见性修饰符扩展到公共,以便可以在任何包中使用它。我很困惑为什么需要这样做。如果按照定义,一切都是 Object 的子类,并且方法在 Object 类中声明为 protected。这不意味着每个班级都可以访问它。覆盖方法时需要公开该方法吗?我很困惑。

标签: javainterfaceclonecloneable

解决方案


您需要将其作为公共覆盖,因为您可能希望从第三类调用它。假设您有一个Base类,它有一个Child覆盖方法克隆的子类。现在我可能有如下第三节课。

public class Third {
  public void m1(Child c) {
     Child d = c.clone();
  }
}

在这里,class, Third 正在调用 clone 方法,因此需要将其声明为 public 才能调用。


推荐阅读