0
Javaの継承に関するいくつかの問題に直面しています。 次の2つのプログラムがその出力を持つ理由を理解できません。 誰か助けてくれますか?どちらの場合も:)Java - 継承の理解の問題
1)
public class A {
int foo() {
return 1;
}
}
public class B extends A {
int foo() {
return 2;
}
}
public class C extends B {
int bar(A a) {
return a.foo();
}
}
C x = new C();
System.out.println(x.bar(x));
// OUTPUT:2
2)
public class A {
int e=1;
}
public class B extends A {
int e=2;
}
public class C extends B {
int bar(A a){
return a.e;
}
}
C x= new C();
System.out.println(x.bar(x));
// OUTPUT:1
例2について間違っています - 出力は "1"です。クラスBはそれ自身のメンバーeを持ち、これは外部のために隠されている。 Bがメンバーeを持たずに値を設定した場合、出力は「2」になりますが、クラスAのメンバーの値A –
Hmを読んでいないので、2番目のプログラム2だろうか? – Johanna
@ジョハナ私のための質問ですか? –