引用變數與物件

2021-05-23 12:25:55 字數 965 閱讀 3153

各種oo語言中採用不同方式例項化(建立)物件。在c#中,當宣告乙個使用者自定義型別變數,如:

student y;

的時候,並沒有在記憶體中真的建立物件,而只是宣告了studnet型別的引用變數y。該引用變數可能會指向乙個student物件,但目前還沒有;或者說,它的值為null,null是c#關鍵字,用來表示不存在的物件。

必須通過特別的c#操作符——new ——來真正在記憶體中創造乙個全新的student物件,和把新物件與引用變數y關聯起來,如下所示:

y = new student();

在幕後,我們實際上把物件被建立到的物理記憶體位址與變數y關聯起來。

把新建立的物件看作是乙個氫氣球,而引用變數則是抓住氣球繫繩的手,這樣就可以在任何時候訪問物件。

引用變數有時被非正式地看作「抓住了」物件,所以我們常使用非正式術語控制代碼(handle)作類似這樣的表達:「引用變數y維護乙個student物件的控制代碼」。

也可以建立新物件,而不把它立即指定乙個引用變數,如下面的**:

new student();

但這樣的物件如同沒有繫繩的氫氣球:它可能真的存在,但卻無法在程式中訪問。它將在記憶體中飄離我們的掌握。

注意,可以把宣告引用的變數和真正例項化變數指向的物件這兩步合到一起,用一行**表示:

student y  = new studnet();

另一種初始化應用變數的方法是交給它乙個已存在的物件:已經為另乙個不同的引用變數(「手」)引用(「抓住」)的物件(「氫氣球」)。來看乙個例子。

//宣告引用變數,例項化第乙個student物件

student x = new student();

//宣告第二個引用變數,但不例項化第二個studnet物件。

student y;

//向y傳遞乙個「控制代碼」,該控制代碼屬於y掌握的物件所有

//(x繼續掌握它)。現在,我們擁有繫著同乙個氣球的兩條繩

y =x;

python物件引用(變數)

python將所有資料存為記憶體物件 變數事實上是指向記憶體物件的引用 動態型別 在任何時刻,只要需要,某個物件引用都可以重新引用乙個不同的物件 可以是不同的資料型別 內建函式type 用於返回給定資料項的資料型別 等號用於將變數名和記憶體中的資料物件繫結,如果物件事先存在,則直接繫結,否則,建立引...

物件導向 值與引用傳參 變數與堆疊

學習內容 1.物件導向與面向過程 面向過程 根據需求,分析解決該需求所需要的步驟,利用函式 方法 將這些步驟一一實現,使用時在進行依次呼叫。物件導向 把需求分解成乙個個的功能,利用函式 方法 將這些功能一一實現,使用時呼叫功能。在物件導向的思維中,不考慮每個功能具體需要哪些步驟 是怎麼實現的,簡單來...

物件與物件引用的區別

一 前言 為了接下來進行更好的分析,我先建立乙個demo類,用於後面的分析。public class demo demo demo new demo 這條語句,其實包括了四個動作 1 右邊的 new demo 是以demo類為模板,在堆空間裡建立乙個demo物件。2 末尾的 意味著,在物件建立後,立...