私はJavaを学んでいます。継承に疑問があります。子クラスが親クラスを拡張し、親クラスが親で宣言されたインスタンス変数を参照するメソッドを持っている場合。ただし、子クラスdintはこのメソッドをオーバーライドし、親と同じ名前のインスタンス変数を宣言しています。この場合、子からのインスタンス変数が参照されるか、親が参照されます。以下はコードスニペットです
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();
}
}
私が得る出力は
親
で子で
10
a
誰かが、子クラスではなく親クラスのインスタンス変数を参照している理由を理解してもらえますかa
?
もう1つの疑問は、親クラスに静的メソッドがあり、子クラスも同じシグネチャを持つ静的メソッドを宣言している場合に、メソッドを非表示にすることを理解したことです。ここで隠すということは?どのメソッドが隠されていますか?親メソッドの場合、説明していただけますか?
前もって感謝します。