java equals覆盖_Java中equals的覆盖

当子类从父类继承下来的方法不再适合子类的需要的时候,要在子类中对该方法重新定义,这种形式称为方法的覆盖(Override)

方法覆盖的要求

* 访问权限不能降低

* 返回类型必须相同

* 方法名称必须相同;

* 参数列表必须相同

* 抛出的异常不能扩大

* 在继承关系的子类中进行覆盖

* 只能覆盖一次

覆盖equals()的套路:

比较地址

判断参数是否是Person类型的,如果是,进行强制类型转换,也就是还原

逐个比较当前对象和参数对象的属性

//当我们需要比较一个类的两个对象的内容是否相同的时候,我们就需要在该类中覆盖equals()

public boolean equals(Object obj) {

System.out.println("Person类的equals()方法被调用");

// 如果两个引用地址相同,直接返回true

if (this == obj) {

return true;

}

// 判断obj是否是Perosn的实例或obj是否是Person类型的,也就是判断是否是还原的过程

if (obj instanceof Person) {

// 引用类型也可以进行强制类型转换.引用类型的强制类型转换实际上就是一个还原的过程

Person per = (Person) obj;

// this.name.equals()调用的是String的equals(),因为String类中已经覆盖了equals()

if (this.age == per.age && name.equals(per.name)) {

return true;

}

}

return false;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值