質問:Test16の参照はMy3(行A)の変数m1にあり、Test17クラスの関数show()はインターフェイスMy3の関数show()とは関係ありません。 次に、Test17クラスのshow()関数がm1によってどのように実行されるかについて説明します。次のように コードは次のとおりです。クラスAはBを継承しますC
class Test17{
public void show(){
System.out.println("Show1");
}
}
class Test16 extends Test17 implements My3 {
public static void main(String[] args){
My3 m1=new Test16();//<----Line A
m1.show();
}
}
interface My3{
public abstract void show();
}
コードを次の出力がある:それはTest17がMY3を実装することは重要ではありませんShow1
'Test16'が' My3'を実装するためには、メソッド 'public void show()'を提供する必要があります。そのようなメソッドはそのスーパークラスで定義されているため、そうします。だから 'Test17.show'は' Test16'クラスに 'My3.show'の実装を提供します。 – khelwood
特に、変数 'm1'によって参照されるオブジェクトは 'Test17'であるが、より具体的には' Test16'であることに注意してください。それは 'Test17.show()'と 'My3.show()'を結びつけるものです。 –
ありがとうございます。私は今それを得ました。 – Napa