6

そのクラスのオブジェクトを作成したい場合は、インターフェイスのすべてのメソッドを実装する必要があることを知っています。しかし、Javaでメソッドcompare()equals()インターフェースの両方を実装する必要がないのはなぜですか?Comparator

目的が解決されたことに同意しますが、それでもequals() をオーバーライドする場合、() をオーバーライドすることが必須ではないのはなぜcompareですか?

4

3 に答える 3

7

すべてのクラスが暗黙的に継承するObjectため、a のすべての実装にはComparatorequals メソッドがあるため、すべてに equals メソッドがありObjectます。

toString() メソッドでインターフェースを定義する場合も同様です。

 public interface ToString {
      public String toString();
 }

 public class SomeClass implements ToString {
     // toString implicitly implemented, because Object defines it
 }

クラスを見てみると「ToStringを実装している」と書いてありますが、これは本当ですよね。

于 2013-10-25T06:45:25.810 に答える
3

java.lang.Object作成できるすべてのオブジェクトですでにオーバーライドされているためです。

于 2013-10-25T06:45:39.787 に答える