public interface Cloneable
谁用过      说一说   最好有例子
------解决方案--------------------class Student implements Cloneable{ 
 	String name; 
 	Student(String name){ 
 		this.name=name; 
 	} 
 	public Object clone(){ 
 		Object o; 
 		try{ 
 			o=super.clone();		//调用基类Object的clone()发法,根据多态性原理,Object类可以判断出返回的是什么类型的对象; 
 		} 
 		catch(CloneNotSupportException e){ 
 			e.printStackTrace(); 
 		} 
 		return o; 
 	} 
 }   
 public CloneTest{ 
 	public static void main(String [] args){ 
 		Student s1 = new Student( "zhangshan "); 
 		Student s2 = (Student)s1.clone();	//获得s1所指向的对象的一个拷贝 
 		s2.name= "lisi ";				//修改s2.name 不会影响s1,因为在内存中s2指向的是s1的一个拷贝(与s1指向的不是同一个内存空间),对其修改不会影响s1; 
 		System.out.println(s1.name);		//输出s1.name 仍然是zhangshan 
 		Student s3=s1;				//引用s1的值赋给s3,s1和s3指向的是同一个对象(堆中的同一个地址,即对象new Student( "zhangshan ")的首地址) 
 		s3.name= "lisi ";				//修改s3.name与修改s1.name的效果是一样的 
 		System.out.println(s1.name);		//输出s1.name变为lisi; 
 	} 
 }   
 另外注:java中参数传递,如果传递的是基本数据类型,那么是按值传递(这点比较好理解),如果传递是引用类型,实际上也可以理解为是“传值”,这里这个值,是引用的值的拷贝,即对象的首地址,这样就会导致在函数内部可以修改外部对象,有时候我们并不希望这样的结果,正如上面的例子,我们仅仅是希望获得外部对象的一个拷贝并在函数内部修改,而不希望修改影响原始的对象,这时候就需要用到对象的拷贝。要实现对象的克隆就要使对象实现Cloneable接口,该接口是一个标识性质的接口,没有定义任何方法。但我们必须显性调用基类Object的clone()方法,已返回一个拷贝对象;