継承、インターフェース、ポリモーフィズムを概念的に理解するために、物事をテストするためのクラスをいくつか作成しました。私が得ている結果は、私が期待したものではありません。コードは次のとおりです。
public class Animal implements Comparable{
//Animal constructor & methods
public int compareTo(Object arg0){System.out.println("Animal.compareTo");}
}
public class Bear extends Animal{
//Bear constructor & methods
}
public class PolarBear extends Bear implements Comparable{
//PolarBear constructor & methods
public int compareTo(Object arg0) {System.out.println("PolarBear.compareTo");
Comparableを再度実装できないというエラーは発生しません。しかし、私のテストでは、PolarBearがAnimalのcompareToを継承する必要がある場合でも、PolarBearを作成するとAnimalのcompareToメソッドに戻ることができません。私は以下をテストしました:
Animal bobo = new PolarBear();
bobo.compareTo(null);
((PolarBear) bobo).compareTo(null);
((Animal)bobo).compareTo(null);
((Comparable) bobo).compareTo(null);
そしてそれらのそれぞれは印刷しました:
PolarBear.compareTo
にアクセスする方法はありますAnimal
かcompareTo
?PolarBear
論理的には、動物の品質と品質を比較できるようにしたいと思いませんPolarBear
か?