当前位置: 代码迷 >> J2SE >> clone后为啥不equals
  详细解决方案

clone后为啥不equals

热度:162   发布时间:2016-04-24 00:41:44.0
clone后为什么不equals
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
  相关解决方案