以下ソースコード(ただし、testtest クラスはどちらかを採用)
public interface taberu {
int doit ();
}
class taberu1 implements taberu{
@Override
public int doit () {
return 1;
}
}
public class taberu2 implements taberu{
@Override
public int doit(){
return 2;
}
}
public class testtest{
public static void main(String[] args){
taberu1 a = new taberu1();
taberu2 b = new taberu2();
int aaa = a.doit();
int bbb = b.doit();
System.out.println(aaa + " and " + bbb);
}
}
public class testtest{
public static void main(String[] args){
taberu a = new taberu1(); //ここが違う
taberu b = new taberu2(); //ここが違う
int aaa = a.doit();
int bbb = b.doit();
System.out.println(aaa + " and " + bbb);
}
}
出力結果
1 and 2
質問は testtest クラスの //ここが違う と書かれているところです
出力結果はどちらも同じなのですが、その違いにより何が違うのか教えてほしいです。それと、抽象クラスにおける場合でもどのような違いがあるのか教えてほしいです><
インターフェースは振る舞いを記述すべきなので抽象クラスを使えと怒られそうなんですが簡単にしたかったのでこうしました。
本を読んでもあまりしっくりと理解できなかったので質問します。
基本的なことを質問してしまいすみません。
お礼
読みやすくて丁寧な回答ありがとうございます。 まさに僕の知りたかったことが理解できました。