黑马程序员技术交流社区

标题: 关于判断两个字符串内容是否相同的方法产生的疑问 [打印本页]

作者: 曹操    时间: 2012-6-2 23:40
标题: 关于判断两个字符串内容是否相同的方法产生的疑问
为什么老师是这样写的boolean equals(Object obj);而按我的理解是boolean equals(string str);?
作者: 黑马张扬    时间: 2012-6-2 23:51
应为他是String类覆盖的Object的 equals()方法    如果像你那样写就是一个新方法 而不是覆盖了
作者: 袁培育    时间: 2012-6-2 23:54
你可以查看一下jdk的帮助文档,既然是比较两个字符串,那两个对象都是String类型,调用的也是String类型的equals方法,String类型的equals方法要传入的参数类型就是Object,这个equals方法是从Object类那里继承过来的,只不过String对其进行了复写,子类复写父类方法时方法名及参数类型不能有任何改动。其实String类也可以重新定义一个自己的equals方法传入一个String类型的参数,但这样没多大意义,而且在向HashMap集合里存入String类型数据时调用的是从Object继承的equals方法。
作者: 李春阳    时间: 2012-6-3 16:55
首先恭喜楼上哈~

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

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

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

我们发现满足条件啦~存在继承;父类指向子类对象;子类重写父类方法。
于是乎,多态出现啦~这里写入Object更加的具有概用性~





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2