java,有什么问题了,菜鸟问问!
我突然发现定义一个类去实现Comparatro接口可以不实现他的equals()方法,是不是因为他的equals()是Object自带的,所以我们平时定义的类都会实现Oj...
我突然发现 定义一个类去实现 Comparatro 接口可以不实现他的 equals()方法,是不是因为他的equals() 是Object 自带的,所以我们平时定义的类都会实现 Oject 类,所以不用实现?
展开
展开全部
在Java语言中Object是所有类的的基类,也就说所有类别都从Object那里继承了equals()方法,即使你实现了接口,只要你还是一个类,你就继承了该方法。既然已继承了equals()方法,为什么还要重写呢?
Object的equals方法源码如下:
public boolean equals(Object obj) {return(this== obj);}
可见Object作为所有类的基类,他不可能知道所有类的数据,所以这里的equals()方法作用是判定非空值引用是否是同一个对象或者当比较参数为空的时候判定一个引用是否为空。
当我们需要判定一个类的对象其内容是否相等的时候就必须重写equals()方法。典型的应用就是Java的基础类String类重写了equals()方法用来判定字串的内容是否相等。所以我们如下代码返回的是true。
String str1 ="happy";
String str2 ="happy";
return str1.equals(str2);
假如在Java中String类没有重写equals()方法,那么上述代码返回为false,而下面代码将会返回为true。
String str ="happy";
String str1 =str;
str = "everyday!" ;
String str2 = str;
return str1.equals(str2);//可见str1和str2的值并不是相等的。
Object的equals方法源码如下:
public boolean equals(Object obj) {return(this== obj);}
可见Object作为所有类的基类,他不可能知道所有类的数据,所以这里的equals()方法作用是判定非空值引用是否是同一个对象或者当比较参数为空的时候判定一个引用是否为空。
当我们需要判定一个类的对象其内容是否相等的时候就必须重写equals()方法。典型的应用就是Java的基础类String类重写了equals()方法用来判定字串的内容是否相等。所以我们如下代码返回的是true。
String str1 ="happy";
String str2 ="happy";
return str1.equals(str2);
假如在Java中String类没有重写equals()方法,那么上述代码返回为false,而下面代码将会返回为true。
String str ="happy";
String str1 =str;
str = "everyday!" ;
String str2 = str;
return str1.equals(str2);//可见str1和str2的值并不是相等的。
展开全部
看上去刚好方法的签名相同,如果使用 eclipse,它的编译与验证的配置中有个“当接口包含于 Object 中冲突方法是警告" 的设置,专门用来盯着这些偷懒的人 。
接口仅仅用于描述应该有什么功能,你想撒谎胡乱地处理一下编译器有不会管你。
Comparator 左右一个用来比较两个对象的接口,你当然需要实现里面的方法才有意义嘛。你想省掉它也行,只是你必须清楚结果将可能不是你想要的。编译器并不能猜测你想干什么,所以它会保持沉默。
接口仅仅用于描述应该有什么功能,你想撒谎胡乱地处理一下编译器有不会管你。
Comparator 左右一个用来比较两个对象的接口,你当然需要实现里面的方法才有意义嘛。你想省掉它也行,只是你必须清楚结果将可能不是你想要的。编译器并不能猜测你想干什么,所以它会保持沉默。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
接口的定义看没,接口就一串方法,没有具体的实现方法。接口继承后肯定要实现接口下的所有方法的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询