java - 重写clone()方法时,为什么需要将其声明为public?

标签 java interface clone cloneable

在我正在读的一本java书中,一个练习程序采用了Object类中 protected clone()方法并重写了它。当他们这样做时,他们将可见性修饰符扩展到公共(public),以便它可以在任何包中使用。我很困惑为什么需要这样做。如果根据定义,一切都是 Object 的子类,并且在 Object 类中将方法声明为 protected。这是否意味着每个类(class)都可以访问它。重写方法时需要将方法公开吗?我很困惑。

最佳答案

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

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

这里,类,第三个正在调用clone方法,因此需要将其声明为public才能调用。

关于java - 重写clone()方法时,为什么需要将其声明为public?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54644213/

相关文章:

java - 如何使用 Java 在 Windows 中获取短文件名?

java - 设置 SQLNET.ALLOWED_LOGON_VERSION 后 Oracle 监听器状态被阻止

python - 是否可以在 Xcode 或等效程序中创建基于 Python 的应用程序?

class - 用户界面是否应该包含在类图和序列图中?

linux - 什么时候 clone() 和 fork 比 pthreads 更好?

c++ - C++中clone系统调用语句出错

java - 本地成员更快或实例成员

java - 如何将 Wicket FormComponentPanel 的标记放入 wicket :fragment? 内

戈朗 : loop through fields of a struct modify them and and return the struct?

javascript - Coffeescript/Javascript 为什么,克隆数组中的对象在传递给方法时似乎丢失了它们的引用?