私はJavaを学んでいます。私は相続に疑念があります。子クラスが親クラスを継承し、親クラスが親クラスで宣言されたインスタンス変数を参照するメソッドを持つ場合。しかし、子クラスdintはこのメソッドをオーバーライドし、親と同じ名前のインスタンス変数を宣言しています。この場合、子からのインスタンス変数が参照されるか、親が参照されます。以下のコードスニペットがあるインスタンス変数をオーバーライドするJava継承
class parent {
int a;
parent() {
System.out.println("in parent");
a = 10;
}
void method() {
System.out.println(a);
}
}
class child extends parent {
int a;
child() {
System.out.println("in child");
a = 11;
}
}
public class Test {
public static void main(String args[]) throws IOException {
parent p1 = new child();
p1.method();
}
}
私が手出力が親に
ある
は、誰かが私を理解してくださいすることができた子で
なぜその参照親クラスのインスタンス変数a
と子クラスのa
ではありません。
もう一つの疑問は、親と子のクラスに静的メソッドがあり、同じシグネチャを持つ静的メソッドも宣言されている場合、メソッドを隠すことを理解していたことです。ここに隠れているの?どんな方法が隠されていますか?その親の方法が私に説明できたらどうですか?
ありがとうございます。
あなたのコードはコンパイルされていますか?コードを実行しましたか? –
これはコンパイルしないでください、親にはメソッド 'method()'がありません –
誤ってフォーマットされました。今すぐコードを更新しました。 – Mojoy