当前位置: 代码迷 >> J2SE >> 求教一个重写的有关问题
  详细解决方案

求教一个重写的有关问题

热度:87   发布时间:2016-04-23 20:24:13.0
求教一个重写的问题
我记得重写要求相同的返回值、方法名、参数列表。
但如果我在自己类中重写equals:

class Test1 {
public boolean equals(String str) {
return true;
}
}

参数列表变了,但编译运行没有问题,为什么?
------解决方案--------------------
引用:
我记得重写要求相同的返回值、方法名、参数列表。
但如果我在自己类中重写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都无所谓了。。。。希望对你有帮助!

  相关解决方案