重複の可能性:
インターフェイスはJavaのオブジェクトクラスから継承しますか
package inheritance;
class A{
public String display(){
return "This is A!";
}
}
interface Workable{
public String work();
}
class B extends A implements Workable{
public String work(){
return "B is working!";
}
}
public class TestInterfaceObject{
public static void main(String... args){
B obj=new B();
Workable w=obj;
//System.out.println(w.work());
//invoking work method on Workable type reference
System.out.println(w.display());
//invoking display method on Workable type reference
//System.out.println(w.hashCode());
// invoking Object's hashCode method on Workable type reference
}
}
呼び出すことができるメソッドは、呼び出す参照変数の型に依存することがわかっています。ここで、コードでは、work() メソッドが "w" 参照 (Workable 型) で呼び出されたため、メソッド呼び出しは正常にコンパイルされます。次に、「w」でdisplay()メソッドが呼び出され、displayメソッドが見つからないというコンパイルエラーが発生します。これは、Workableが認識していないため明らかです。次に Object クラスのメソッド、つまり hashCode() を呼び出して、コンパイルと実行を成功させようとします。それはどのように可能ですか?論理的な説明はありますか?