JavaGold 関数型インタフェースについて
Q&A
Closed
解決したいこと
JavaGoldを取得目指して学習しています。紫本(JavaプログラマGoldSE11)の問題でわからないことがあります。
解決方法を教えて下さい。
発生している問題
equal()引数なし→コンパイル成功
関数型インタフェースを明示しています。下記のコードでデフォルトメソッドとして、equals()メソッドを定義しています。この場合はエラーは発生しないようです。
@FunctionalInterface
interface Test<T>{
default void equals(){}
void task(T t);
}
equal(Object obj)引数あり→エラー
しかし、下記のようにequals(Object obj)として、定義するとエラーになるようです。引数があるとエラーになるようです。
@FunctionalInterface
interface Test<T>{
default void equals(Object obj){}
void task(T t);
}
疑問点
上記のコードの解説では、Objectクラスのメソッドであるequals(Object obj),hasCode(),toString()メソッドはデフォルトメソッドとして、定義不可でequals()で引数がないなら定義可能と記載されています。
また、同書のインタフェースの解説では、equals(),hasCode(),toString()メソッドはデフォルトメソッドとして、定義不可と記載されています。
質問
上記の疑問点から
①なぜequals()メソッドだけ引数なしなら定義可能で、hasCode(),toString()メソッドは引数なしでもダメなのか。
②インタフェースでは、equals(),hasCode(),toString()メソッドはデフォルトメソッドとして、定義不可と記載されているが、上記のコードではなぜequals()メソッドは定義可能なのか。
自分で解説を読んだり、調べてみましたが、理解に至っていません。ご協力をお願いします。