首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

clone后为啥不equals

2012-08-11 
clone后为什么不equalsJava codepackage prototypepublic abstract class AbstractPerson implements Clo

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

热点排行