1.clone 方法是 object 的一个protected方法 这个看API就知道了.
2.由于 protected 方法是这样的方法,子类可以访问,同包中的类可以访问.
3.所以我们可以得出一个结论,任何类都是object的子类,任何类都可以有clone()方法.
4.当然下而的类是不对的,要clone就要覆盖clone方法的.编译时说"clone() 不可以在 java.lang.Object 中访问 protected"
5.这个一方面是可以访问protected 一方面又是不可以,道理上说不用覆盖就可以用的啊,因为子类可以访问protected
6.问题:clone方法到底怎么回事?
public class Test{
public static void main(String[] args){
Student s1 = new Student();
Student s2 = (Student)s1.clone();
}
}
class Student implements Cloneable{
int age = 18;
//此处应有一个clone()方法
}
2.由于 protected 方法是这样的方法,子类可以访问,同包中的类可以访问.
3.所以我们可以得出一个结论,任何类都是object的子类,任何类都可以有clone()方法.
4.当然下而的类是不对的,要clone就要覆盖clone方法的.编译时说"clone() 不可以在 java.lang.Object 中访问 protected"
5.这个一方面是可以访问protected 一方面又是不可以,道理上说不用覆盖就可以用的啊,因为子类可以访问protected
6.问题:clone方法到底怎么回事?
public class Test{
public static void main(String[] args){
Student s1 = new Student();
Student s2 = (Student)s1.clone();
}
}
class Student implements Cloneable{
int age = 18;
//此处应有一个clone()方法
}
楼主【fuqiang229】截止到2008-07-02 21:10:43的历史汇总数据(不包括此帖):
发帖的总数量:9 发帖的总分数:150
结贴的总数量:8 结贴的总分数:150
无满意结贴数:0 无满意结贴分:0
未结的帖子数:1 未结的总分数:0
结贴的百分比:88.89 % 结分的百分比:100.00%
无满意结贴率:0.00 % 无满意结分率:0.00 %
楼主加油
public Object clone 供大家公开使用
Student s1 = new Student();
Student s2 = s1.clone();
System.out.println(s1.age);
System.out.println(s2.age);
}}class Student implements Cloneable {
//覆盖了 clone 方法实现了克隆功能的类必须实现 Cloneable 这一标记接口 public int age = 18; //此处应有一个clone()方法 public Student clone() {
//首先覆盖超类 Object 提供的 clone 方法,然后扩大它的访问级别(由 protected 到 public)
//然后将方法返回值类型具体化,这个也叫方法返回值协变
Student s = null;
try {
s = (Student) super.clone();
} catch (CloneNotSupportedException e) {
//正常情况下此异常不可能发生
}
return s;
}}
利用超类 Object 的 clone 方法完成浅表复制。