我记得重写要求相同的返回值、方法名、参数列表。
但如果我在自己类中重写equals:
class Test1 {
public boolean equals(String str) {
return true;
}
}
参数列表变了,但编译运行没有问题,为什么?
------解决方案--------------------
这个相当于重载,不是重写
http://www.cnblogs.com/bluestorm/archive/2012/03/01/2376236.html
------解决方案--------------------
感觉既不是重写也不是重载
------解决方案--------------------
加上重写标志,@override就会报错了,这个注解就是为了想重写某个方法却误操作未能重写的情况,
------解决方案--------------------
这就变成了重载,楼主可以再看看这几个容易让人搞混的概念——http://blog.csdn.net/ericbaner/article/details/3857268
------解决方案--------------------
参数变了不叫override哈
继承类可以显式加@override注释,编译器会提示你的重写方式是否正确
------解决方案--------------------
参数不能变,如果要和字符串equels的话,可以 这样
class Test1 {
@Override
public boolean equals(Object obj) {
if( o instanceof String) {//如果这个Object属于String类
String str = (String)obj;//转化成String
......//根据你的需要返回boolean
}
if( obj instanceof Xxxxx ) {//如果属于其他类
Xxxxx x = (Xxxxx) obj;
......
}
}
这样加不加@Override都无所谓了。。。。希望对你有帮助!