2012-05-22 468 views
2

當我們在java中有基類和子類時,我們實例化子類,我們得到一個或兩個實例?如果我們得到兩個對象,我們得到了多少個實例?一個實例是否擁有基類和子類的兩個對象或兩個單獨的實例?實例vs對象

回答

0

當我們在java中有基類和子類時,我們實例化了sub 類,我們得到一個或兩個實例?

我們得到一個實例,因爲每個Java類實例都包含在一個對象中。

如果我們得到兩個對象,我們得到了多少個實例?

術語「實例」與對象同義。說一個實例是說一個對象的不同方式。

是否有一個實例包含基類和子類的兩個對象或兩個 單獨的實例?

編號Java編譯器創建的類字節碼包含基本和擴展的功能,因此將該類實例化爲單個對象。

4

如果你實例化一個子類,你只會得到一個對象/實例。這個單一實例將包含子類的所有字段(其中包括由其父類定義的字段)。

請記住,子類意味着您正在定義一個新的類,其中從現有父級派生出,即它繼承了這些定義。因此,如果父級聲明名爲id的字段,則子類也將具有名爲id的字段,因此該子類的實例化將包含id字段。該字段爲,在父類中聲明爲,但它確實屬於子類。

如果您實例化子類,則不會實例化父類。沒有存在其運行時類爲父類的對象。我不確定你的問題中「對象」和「實例」之間的區別是什麼,你用它們暗示它們是不同的,但通常它們意味着完全相同的東西。對象是特定類的一個實例。)

+0

什麼是實例和對象之間的邏輯差異? – Kahn

+0

@Hesper:沒什麼。當你強調它是一個特定類的實例時,你傾向於使用「實例」。但是所有對象都是* some *類的實例,並且所有實例都是對象。他們是不同的術語,具有不同的細微差別,同樣的事情。 –

1

實例==對象...都是相同的,只是2個不同的名稱。如果你創建一個對象(也許是一個子類),你會得到一個對象。

4

您將得到一個屬於兩個類的單個實例 - 基類和子類。

試着用這個例子來理解它:有一個類哺乳動物和類​​人類。你屬於他們兩個 - 但是,你自己有一個例子。如果房間裏有兩個人,你會有兩個班的兩個實例!

0

什麼是實例和對象之間的邏輯差異?

在您使用這些詞的上下文中,沒有區別。 (類的)實例是一個對象,反之亦然。

但是,在更廣泛的上下文中,(類型的)實例不一定是一個對象 - 它取決於類型。例如,你可能42int類型的「實例」。