Object o=new String();//""
String str=new String();
System.out.println(o==str);//false
System.out.println(o.equals(str));//true
Father f=new Son();
Son s=new Son();
System.out.println(f.equals(s));
为什么自写的父类和子类对象之间比较为false
== 比较的是内存地址 Object的equals是比较的hash值 String 的 equals 比较的是内容(因为String类重写了equals方法)
父类equals子类,那么比较的是hash,每个对象的hash都是不一样的,所以输出为false
如果你的 父类 equals 子类 预期结果是 true 的话,那么需要重写 Son 对象的 equals() 方法;如果预期 父类 = 子类 的结果是 true ,那么还需要重写 hashCode() 方法