A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

为什么老师是这样写的boolean equals(Object obj);而按我的理解是boolean equals(string str);?

3 个回复

倒序浏览
应为他是String类覆盖的Object的 equals()方法    如果像你那样写就是一个新方法 而不是覆盖了
回复 使用道具 举报
你可以查看一下jdk的帮助文档,既然是比较两个字符串,那两个对象都是String类型,调用的也是String类型的equals方法,String类型的equals方法要传入的参数类型就是Object,这个equals方法是从Object类那里继承过来的,只不过String对其进行了复写,子类复写父类方法时方法名及参数类型不能有任何改动。其实String类也可以重新定义一个自己的equals方法传入一个String类型的参数,但这样没多大意义,而且在向HashMap集合里存入String类型数据时调用的是从Object继承的equals方法。

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1 祝贺你,圆满完成任务...

查看全部评分

回复 使用道具 举报
首先恭喜楼上哈~

API帮助文档里有哈~首先,equals()方法子Object类中有。
大家都知道Object是所有类的父类,因而也就是说所有的类都可以用啦~(当然也包括String类了)

而String类又按自己需要对equal()进行了重写~

boolean equals(Object obj)这里传入的是父类Object

我们发现满足条件啦~存在继承;父类指向子类对象;子类重写父类方法。
于是乎,多态出现啦~这里写入Object更加的具有概用性~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马