java - 重写 clone() 方法时,为什么需要将其声明为 public?
问题描述
在我正在阅读的一本 java 书籍中,一个练习程序采用 Object 类中受保护的 clone() 方法并覆盖它。当他们这样做时,他们会将可见性修饰符扩展到公共,以便可以在任何包中使用它。我很困惑为什么需要这样做。如果按照定义,一切都是 Object 的子类,并且方法在 Object 类中声明为 protected。这不意味着每个班级都可以访问它。覆盖方法时需要公开该方法吗?我很困惑。
解决方案
您需要将其作为公共覆盖,因为您可能希望从第三类调用它。假设您有一个Base
类,它有一个Child
覆盖方法克隆的子类。现在我可能有如下第三节课。
public class Third {
public void m1(Child c) {
Child d = c.clone();
}
}
在这里,class, Third 正在调用 clone 方法,因此需要将其声明为 public 才能调用。
推荐阅读
- assembly - 如何使用 z80 汇编语言将内存位置的内容左移 1 位到另一个内存
- python - 找到围绕圆形滑轮的链带的曲率
- python - 正确设置导入:`from x import y` 有效,而 `import xy` 无效
- javascript - 为什么我的函数在调用时没有定义?
- node.js - 无法使用 knex.js 连接到 heroku psql 数据库
- machine-learning - 自动更改一个模型 在 keras 中更改另一个
- assembly - 在屏幕上显示缓冲输入
- magento2 - 在 Magento 2.3 中覆盖/重写第三方模型不起作用
- amazon-redshift - Redshift 弹性调整大小——降级集群有多难?
- keras - 在这种情况下,哪个模型更好?