有關將子類物件的引用付給父類控制代碼的問題

2025-02-20 07:25:27 字數 1857 閱讀 4905

父類控制代碼指向子類物件與子類控制代碼指向子類物件的區別

1樓:網友

樓主是想問多型吧~

舉個例子吧。

比如person類和student類 其中student類繼承了person類。

person p = new student();

person類的變數p,但真正指向的卻是子類student,這時變數p可以呼叫父類中定義的方法,但具體到執行方法時卻有看的是子類重寫後的方法(這就是虛方法呼叫)。

此時p是不能呼叫子類新「新增"的方法的。

而student s = new person();是不被允許的,編譯是無法通過的。

可以簡單的理解為,「人」所具備的特徵屬性,「學生」都具有,但「學生」具備的特徵與屬性並不是「人」都具備的。比如「學生激閉」可以有「學校」「班級」等屬性,但並不是「人」具備的。扮鉛激而「人」具備的「姓名」,「年齡」屬性,「學生」是可以具廳襪備的。

為什麼說j**a中的引用變數以物件的形式存在,引用變數只是儲存物件的控制代碼?

2樓:王_牌

記住這個就行了。

物件的記憶體位址是連續的。引用變數只是儲存物件的首位址。

父類物件的引用 引用子類物件 和 子類物件的引用 引用子類物件 有什麼區別

3樓:網友

父類物件的引用 引用子謹漏類物件:

該物件只能祥鬧爛訪問父類規定的方法,子類新定義的方法,變數不能訪問。

子類物件的引用 引用子類物件:

訪問父類中和彎歷新定義的所有東西。

『父類引用指向子類物件』有什麼意義?

4樓:長師發貼專用號

意義可大了,打個簡單點的比方。

爸爸 王小二=new 大兒子();

爸爸 王小二=new 小兒子();

那我現在叫大兒子過來,王小二可以過來,我叫小兒子過來,王小二也可以過來。

方便吧。在做專案的時候, 爸爸 王小二; 這步是我寫的;

後面王小二=new 小兒子();或者new 大兒子()不一定是我寫,那我怎麼知道他到底要的是大兒子還是小兒子,所有我宣告他們爸爸的引用,你叫大兒子和小兒子都ok。 我要是寫具體的 小兒子 王小二=new 小兒子(),不是把別人限定死了嗎。

就算那兩步都是你自己寫,我專案做完了,我如果要修改的話,那我至少宣告的那部分可以不動了吧。也就是說擴充套件了程式的 移植性和可維護性。

5樓:網友

class father;

class son extends father

void show()

class demo

1 .如果你想實現多型,那麼必須有三個條件,父類引用,子類物件,方法覆蓋。

你這裡如果fathor類有乙個show()方法,那麼形成方法覆蓋,那麼此時就可以這麼寫,此刻形成了多型。

2. 沒有方法覆蓋,那你這裡只能解釋為父類引用去訪問乙個子類的方法,當然,父類引用沒有這麼大範圍的許可權,當然會報錯。

ps:多型實際上是一種機制,在編譯時刻,會生成一張虛擬表,來記錄所有覆蓋的方法,沒有被覆蓋的方法是不會記錄到這張表的。若乙個父類引用呼叫了沒有覆蓋的子類方法,那麼是不符合該表的,那麼編譯時刻就會報錯。

在執行程式的時候,虛擬機器會去這張虛擬表中找覆蓋的方法,比如引用中實際上存的是乙個子類物件引用,那麼就會去找子類中的相應的覆蓋的方法來執行。

6樓:gbase國產資料庫

讓你更關注,我們的祖先能做什麼,而不關心他的子孫是具體怎麼做的,更不關心他們自創的能力。

好處是,你可以隨時替換乙個幹活的,而不會出現不能幹某些活的情況。

python 物件通過引用傳遞的問題

python的變數都是物件的引用 象賦值操作,如果等號右側是字面表示式,那麼會建立乙個新物件,因此b指向的是13這個新物件,而不是修改儲存值12的舊物件。而且數字,字串,元組這些屬於不能本地修改的物件如s hello world s 0 h 這樣的語句會報錯。python 是值傳遞還是引用傳遞 知乎...

關於「未將物件引用設定到物件的例項」這個錯誤怎麼解決

關於 未將物件引用設定到物件的例項 這個錯誤的解決步驟如下 1 首先,所設定的變數為空值或沒有取到值,一般出現在傳遞引數的時候出現這個問題,也會在使用datagrid或gridview或datalist等資料控制項時出現。2 設定控制項名稱與codebehind裡面的沒有對應。3 設定未用new初始...

C類的物件和類的指標的區別,指標和引用的區別

c 物件是類的示例,當定義乙個類的時候,系統是不為這個類分配空間的,只有當定義類的物件的時候才會分配空間,類的物件實際上就是類空間的引用。指標是用來儲存變數的位址。區別 指標和引用的區別 指標指向一塊記憶體,它的內容是所指記憶體的位址 引用 是某塊記憶體的別名。指標版 是乙個實體,而引用僅是個別名權...