そのクラスのオブジェクトを作成したい場合は、インターフェイスのすべてのメソッドを実装する必要があることを知っています。しかし、Javaでメソッドcompare()とequals()インターフェースの両方を実装する必要がないのはなぜですか?Comparator
目的が解決されたことに同意しますが、それでもequals() をオーバーライドする場合、() をオーバーライドすることが必須ではないのはなぜcompareですか?
そのクラスのオブジェクトを作成したい場合は、インターフェイスのすべてのメソッドを実装する必要があることを知っています。しかし、Javaでメソッドcompare()とequals()インターフェースの両方を実装する必要がないのはなぜですか?Comparator
目的が解決されたことに同意しますが、それでもequals() をオーバーライドする場合、() をオーバーライドすることが必須ではないのはなぜcompareですか?
すべてのクラスが暗黙的に継承する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を実装している」と書いてありますが、これは本当ですよね。
java.lang.Object作成できるすべてのオブジェクトですでにオーバーライドされているためです。