Object类----equals方法与equals覆写
2017-10-24 10:37
435 查看
/* object:所有类的根类 object是不段抽取而来的,具有所有对象都具备的共性内容。 常用的共性功能: */ /* class Fu //extends Object { Fu() { super(); } } class Zi extends Fu //子类并不继承object 因为java没有多继承 { Zi() { super(); } }*/ class Person extends Object { private int age; Person(int age) { this.age = age; } //我们发现 equal函数完全可以用 == 来代替 十分鸡肋 //并且 如果我们不想要比较地址值 而是内容 那我们该怎么做? //如下定义一个比较函数吗? public boolean compare(Person p) { return this.age == p.age; } /* *(non-Javadoc) * @see java.lang.Object#equals(java.lang.Object) * 一般都会覆盖此方法,根据对象的特有内容,建立判断对象是否有相同的依据。 * 一般不比较地址值 没有意义。 */ //然而 因我们继承了object 已经有equal函数 我们只需要进行覆写。 public boolean equals(Object obj)//注意 参数需和父类中的函数参数相同 否则便是重载 { //return this.age == obj.age;//出现问题:其实参数是多态形式 传进来的参数已经 //被向上提升为object型 而提升后子类特有数据无法被调用。 //因此 我们需要向下转型: 注意:向下转型时要注意类型。 if(!(obj instanceof Person)) { // return false; throw new ClassCastException("类型错误"); } Person p = (Person)obj; return this.age == p.age; } } class Demo3 { } public class ObjectDemo1 { public static void main(String[] args) { // TODO Auto-generated method stub Person p1 = new Person(20); Person p2 = new Person(10); Demo3 d = new Demo3(); //出现新问题 因为覆写的equals函数里的参数是object //那么意味着所有类都可以往里传。 //如我们现在往里穿demo形式的d //这时 我们就需要做一些处理。 System.out.println(p1.equals(d)); // System.out.println(p1.equals(p2));//false 比较的地址值 } }
相关文章推荐
- Object类学习 equals() 方法和toString()方法覆写
- Object类----equals方法与equals覆写
- Object类----equals方法与equals覆写
- Object类----equals方法与equals覆写
- Object类----equals方法与equals覆写
- Object类----equals方法与equals覆写
- Object类----equals方法与equals覆写
- Object类----equals方法与equals覆写
- Object类----equals方法与equals覆写
- Object类----equals方法与equals覆写
- JAVA笔记7-Object类之toString方法和equals方法
- 这样覆写Object类的toString方法对吗
- object类中的equals和hashcode方法
- Java基础-构造函数,覆写父类方法,多态及动态绑定,抽象类和Object类的运用
- Java中重写Object类的equals方法和Hashcode方法的注意事项
- 向HashSet集合存入对象,去除重复元素(覆写equals和hashCode方法)
- 40_面向对象_13_继承_Object类用法_toString和equals方法_重写toString
- Java中Object类的equals方法
- 5.2 Object类,equals方法
- Java中的Object类的toString()方法,equals()方法