そのクラスのオブジェクトを作成したい場合は、インターフェイスのすべてのメソッドを実装する必要があることを知っています。しかし、Javaでメソッドcompare()
とequals()
インターフェースの両方を実装する必要がないのはなぜですか?Comparator
目的が解決されたことに同意しますが、それでもequals
() をオーバーライドする場合、() をオーバーライドすることが必須ではないのはなぜcompare
ですか?
そのクラスのオブジェクトを作成したい場合は、インターフェイスのすべてのメソッドを実装する必要があることを知っています。しかし、Javaでメソッドcompare()
とequals()
インターフェースの両方を実装する必要がないのはなぜですか?Comparator
目的が解決されたことに同意しますが、それでもequals
() をオーバーライドする場合、() をオーバーライドすることが必須ではないのはなぜcompare
ですか?
すべてのクラスが暗黙的に継承するObject
ため、a のすべての実装にはComparator
equals メソッドがあるため、すべてに equals メソッドがありObject
ます。
toString() メソッドでインターフェースを定義する場合も同様です。
public interface ToString {
public String toString();
}
public class SomeClass implements ToString {
// toString implicitly implemented, because Object defines it
}
クラスを見てみると「ToStringを実装している」と書いてありますが、これは本当ですよね。
java.lang.Object
作成できるすべてのオブジェクトですでにオーバーライドされているためです。