日期:2014-05-20  浏览次数:20692 次

关于java Clone的困惑
class AClone {
   
}
public class TestClone {

  public static void main(String[] args){
TestClone tc = new TestClone();
try {
tc.clone(); //为什么此处可以clone........
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}

AClone ac = new AClone();
ac.clone();//为什么此处不可以clone呢?哪个解释一下
  }
}


------解决方案--------------------

 protected 的方法可以在同一个包或者在其子类中可以访问!
AClone ac = new AClone();
 ac.clone();//为什么此处不可以clone呢?哪个解释一下
你这里不在同一个包,也没有在其子类中。建议看看的Java的权限修饰符
------解决方案--------------------
原因就是因为clone方法是protected的,然而你的AClone这个类是默认包访问权限的,那么你继承的方法也只能是大于包访问权限的,很显然,如果protected的方法让你继承了,那这个方法还是包内访问还是继承访问呢?这就是矛盾的了撒。不知道是否明白
------解决方案--------------------
请楼主注意clone的方法作用域是protected
只能在类自己或者子类中调用......