- Java code
package prototype;public abstract class AbstractPerson implements Cloneable{ @Override protected Object clone() { Object obj=null; try { obj= super.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } return obj; } public abstract void canSpeak();}
- Java code
package prototype;public class Person extends AbstractPerson{ @Override public void canSpeak() { System.out.println("i can speack.."); }}
- Java code
package prototype;public class Client { public static void main(String[] args) { AbstractPerson ap=new Person(); AbstractPerson ap2=null; ap2=(Person)ap.clone(); System.out.println(ap2.equals(ap)); }}
为什么会是false???????????
------解决方案--------------------
你没重写equals它默认是判断是否指向同一对象(与==一样效果),clone出来的是两个不同对象,所以是false