以下のようなインターフェースを定義すると
interface I1{
}
次のように書くことができる任意のコードセクションで
I1 i1;
i1.equals(null);
次に、equals メソッドがどこから来るのか、インターフェイスはスーパー クラス Object も拡張しますか? その場合、インターフェイスはどのようにクラスを拡張できますか?
インターフェースがスーパークラス Object を拡張すると仮定すると、 Set のようなコレクションインターフェースが equals() および hashCode() メソッドを定義しなければならない理由がわかりますか? すべてのクラスは Object クラスを拡張するため、 Object クラスに存在するインターフェイスで抽象メソッドを定義すると、インターフェイスを実装する人はそれらのメソッドを実装する必要がなくなります。以下のコードのように
interface I1{
String toString();
}
class A implements I1{
}
ここで、クラス A は Object クラスに存在するため、メソッド toString() を実装する必要はありません。次に、実装クラスにそれらのメソッドを実装させることはできないため、コレクションインターフェイスでこれらのメソッドを定義する目的は何ですか。