clone方法之困惑
Java小白在学习中遇到的一些问题:
package cn.clone;
public class Student implements Cloneable{
private String name;
private int number;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
//@Override
//protected Object clone()
// throws CloneNotSupportedException{
// return super.clone();
//
}
public static void main(String args[]) { }
}
public class StudentDemo {
public static void main(String[] args) throws CloneNotSupportedException {
//创建学生对象
Student s=new Student();
s.setName("xxx");
s.setNumber(11);
//克隆学生对象
Object obj=s.clone();//会报错
Student s1=(Student)obj;
// System.out.println(s.getName()+"------"+s.getNumber());
// System.out.println(s1.getName()+"------"+s1.getNumber());
//
//以前的做法
Student s2=s;
// System.out.println(s2.getName()+"------"+s2.getNumber());
//其实是有区别的
s2.setName("ss");
s.setNumber(10);
System.out.println(s.getName()+"------"+s.getNumber());
System.out.println(s1.getName()+"------"+s1.getNumber());
System.out.println(s2.getName()+"------"+s2.getNumber());
}
}
问题:为什么注释掉Student中重写的clone方法后报错?clone的权限是protect型的,protect型的方法在同一个包中是可以相互访问的,为什么??