无法访问子 class 中受保护的方法
Can not access protected method in the sub class
为什么我不能在 public class Object
中使用 clone() 方法? clone()
方法是 protected
对象 class 并且所有 classed 都是对象 class 的子 class。 protected
方法可以从子 classes 和同一包中的 classed 访问。那么为什么我会出现这样的错误呢?
public class Test
{
public static void main(String[] args)
{
Test2 c1 = new Test2();
Test2 c2 = (Test2) c1.clone(); // error: clone() has protected access in java.lang.Object
}
}
class Test2 implements Cloneable
{
}
clone()
在java.lang.Object
里,你的Test
class不在java.lang
包里。换句话说,protected
并不完全代表您认为的意思。
修复很简单。将此添加到您的 Test2:
class Test2 implements Cloneable {
@Override public Test2 clone() {
return (Test2) super.clone();
}
}
为什么我不能在 public class Object
中使用 clone() 方法? clone()
方法是 protected
对象 class 并且所有 classed 都是对象 class 的子 class。 protected
方法可以从子 classes 和同一包中的 classed 访问。那么为什么我会出现这样的错误呢?
public class Test
{
public static void main(String[] args)
{
Test2 c1 = new Test2();
Test2 c2 = (Test2) c1.clone(); // error: clone() has protected access in java.lang.Object
}
}
class Test2 implements Cloneable
{
}
clone()
在java.lang.Object
里,你的Test
class不在java.lang
包里。换句话说,protected
并不完全代表您认为的意思。
修复很简单。将此添加到您的 Test2:
class Test2 implements Cloneable {
@Override public Test2 clone() {
return (Test2) super.clone();
}
}