对象的克隆方法是受保护的,因此可以在子类(A 类)中访问它,那么为什么我会收到“clone() has protected access in java.lang.Object”编译器错误?我认为所有 Java 类都是 Object 的子类。提前致谢。
下面的代码会引发编译器错误:
public class A {
public static void main(String[] args) {
Object o = new Object();
o.clone();//error
}
}
Run Code Online (Sandbox Code Playgroud)
但是这个编译完美,它们不是有相同的语义吗?
public class A {
protected void foo() {
}
}
Run Code Online (Sandbox Code Playgroud)
public class B extends A {
public static void main(String[] args) {
A a = new A();
a.foo();
}
}
Run Code Online (Sandbox Code Playgroud)
不,他们没有。
protected意味着两件事:
package,_这解释了为什么你的第二个片段可以调用foo(). B这并不是关于extends的事实A,而是A在于它与B.final),您可以简单地覆盖它,将其实现为return super.clone();,现在您可以很好地调用它。| 归档时间: |
|
| 查看次数: |
405 次 |
| 最近记录: |