我對代碼的輸出感到困惑。我想知道變量i和s的每次調用哪個類用於調用變量。這個問題涉及可變陰影。另外我想知道在主要方法中如何保持不斷變化。有人可以向我解釋這段代碼的輸出嗎?
public class A {
public int i = 0;
public static String s = "";
public A(int i) {
System.out.println(i);
s += "x";
}
public A debug() {
if (this instanceof B) {
System.out.println("Spam");
s += "s";
}
return this;
}
}
public class B extends A {
public int i = 100;
public static String s = "s";
public B(int i, String s) {
super(i);
this.i += 5;
this.s = s;
}
public static void main(String[] argv) {
String s = "";
B b = new B(0, s);
System.out.println(b.i + " " + b.s);
s += "foo";
A a = new B(42, s);
System.out.println(a.i + " " + a.s);
System.out.println(b.debug().s + " " + b.i + " " + b.s);
System.out.println(a.debug().s + " " + a.i + " " + a.s);
}
}
這裏是代碼的輸出:
0
105
42
0 xx
Spam
xxs 105 foo
Spam
xxss 0 xxss
此處插入代碼...如果它會從網站上刪除了什麼?那麼問題就沒用了。 –
我不明白你在問什麼。你問「如何獲得問題3中的輸出。」產生輸出的代碼出現在它的正上方,對吧?因此,要獲得該輸出,請運行該代碼。我誤解了什麼? – smarx
這個問題有點尷尬,但顯然他們問「爲什麼代碼會產生輸出」。 – JJJ