2 回答

TA貢獻1862條經驗 獲得超7個贊
這是一個簡單的任務。 是賦值運算符。=
讓我們明確以下幾點。
在 Java 中,當創建對象并且可以通過參考。引用對象。
一次一個引用只能引用一個對象
類型 X 的引用可以引用類型 X 的對象或任何子類型(在 X 是類的情況下進行擴展,如果 X 是接口,則實現)。
現在假設有兩個類,使得 .Super
Sub
Sub extends Super
SuperClass reference = new SubClass();
這是允許的,因為子類繼承自超類。上面我們有一個在堆中創建的子類類型的對象,它可以通過訪問。名為reference
請注意,類型的引用不能引用 的對象。讓我們簡要地看看為什么會這樣?如果允許對類型的引用引用類型的對象,那么它將被允許調用由定義的其他方法(函數),這將繼承所有方法,并且還定義了幾個附加方法)?,F在,這會使應用程序崩潰,因為 的對象 僅在 中定義了方法,但沒有 由 定義的任何其他方法。因此,編譯器在編譯時會阻止它。這是一個編譯時錯誤,使類型的引用引用類型的對象SubClass
SuperClass
SubClass
SuperClass
SubClass
SubClass
SuperClass
SuperClass
SuperClass
SubClass
SubClass
SuperClass
現在讓我們看一下問題中提到的代碼
SuperClass a = new SuperClass(); SubClass b = new SubClass(); a = b;
第 1 行:我們有一個超類的對象,由一個名為a
第2行:我們有一個子類的對象,由一個名為子類的變量引用b
第 3 行:我們有一個賦值,其中 被分配來引用 與 所指的對象相同的對象。因此,現在我們有兩個引用,都引用了在第 2 行創建的類型的對象。在第 1 行創建的 typer 對象(使用問題中提到的當前可用代碼)沒有任何引用,因此它符合垃圾回收的條件。a
b
SubClass
SuperClass

TA貢獻1801條經驗 獲得超8個贊
沒有任何“反應”。變量“b”引用的對象是單個對象。它同時是 B 的實例和 A 的實例。
當你執行賦值時,先前由變量'a'引用的對象變得不可訪問。對這一舊對象的考慮不參與這一討論。a = b
賦值后,“a”和“b”引用到同一對象。對象未更改。它仍然是 B 的實例和 A 的實例。
也許您理解的障礙是對象和引用這些對象的變量之間的區別?
添加回答
舉報