假設A是 的超類,B每個都有i默認值為 的屬性0。
B b = new B();
System.out.print(b.i);
A a = b;
a.i = 3;
System.out.print(b.i);
為什么輸出00不是03?
鑄造會創建新物件嗎?
編輯 :
這些是 A 和 B :
class A {
int i;
}
class B extends A {
int i;
}
uj5u.com熱心網友回復:
沒有看到A或B有點難以推測,但聽起來你有第二個欄位i在陰影B中的欄位。這是一個完整的自包含示例,iA
static class A {
public int i = 0;
}
static class B extends A {
public B() {
this.i = 2;
}
}
public static void main(String[] args) {
B b = new B();
System.out.println(b.i);
A a = b;
a.i = 3;
System.out.println(b.i);
}
那輸出
2
3
清楚地表明強制轉換不會創建新物件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/426714.html
