(基礎篇)類和物件

2021-08-22 06:02:33 字數 1344 閱讀 3975

類的真正意義就是在描述事物。屬性和功能統稱為事物中的成員。

事物的成員分為兩種:成員屬性和成員功能。

成員屬性在**中的體現就是成員變數

成員功能在**中的體現就是成員方法

類是用於描述事物的,類中可以定義事物的屬性和行為。而物件是通過描述的這個類,使用new關鍵字建立出來,通過物件就可以呼叫該物件具體的屬性和功能了。

理解清楚了類和物件之後,發現在描述類的屬性和前面學習定義變數差別不大,唯一區別就是位置發生了改變,那麼類中定義的變數,和在方法定義的變數有啥差別呢?

區別一:定義的位置不同

定義在類中的變數是成員變數

定義在方法中或者{}語句裡面的變數是區域性變數

區別二:在記憶體中的位置不同

成員變數儲存在堆記憶體的物件中

區域性變數儲存在棧記憶體的方法中

區別三:宣告週期不同

成員變數隨著物件的出現而出現在堆中,隨著物件的消失而從堆中消失

區域性變數隨著方法的執行而出現在棧中,隨著方法的彈棧而消失

區別四:初始化不同

成員變數因為在堆記憶體中,所有預設的初始化值

區域性變數沒有預設的初始化值,必須手動的給其賦值才可以使用。

引用型別資料和基本型別資料作為引數傳遞有沒有差別呢?我們用如下**進行說明,並配合**讓大家更加清晰

基本型別作為引數傳遞時,其實就是將基本型別變數x空間中的值複製了乙份傳遞給呼叫的方法show(),當在show()方法中x接受到了複製的值,再在show()方法中對x變數進行操作,這時只會影響到show中的x。當show方法執行完成,彈棧後,程式又回到main方法執行,main方法中的x值還是原來的值。

當引用變數作為引數傳遞時,這時其實是將引用變數空間中的記憶體位址(引用)複製了乙份傳遞給了show方法的d引用變數。這時會有兩個引用同時指向堆中的同乙個物件。當執行show方法中的d.x=6時,會根據d所持有的引用找到堆中的物件,並將其x屬性的值改為6.show方法彈棧。

由於是兩個引用指向同乙個物件,不管是哪乙個引用改變了引用的所指向的物件的中的值,其他引用再次使用都是改變後的值。

Py基礎篇 類和物件

眾所周知,類和物件是物件導向的重要內容,我希望大家看完之後能有所收穫。那麼類是個什麼東西呢?其實可以把類當成乙個自定義的型別,或者變數。也可以用來創造物件。定義類的三種格式 class 類名 pass 暫時先不寫,又不想報錯,就可以用pass替代 class 類名 pass class 類名 obj...

Java類與物件 基礎篇

目錄 一 instanceof 二 向下轉型 三 向上轉型 四 object類 4.1 常用方法 4.2 預設 五 抽象類 六 介面 七 方法過載 八 多型 九 繼承 繫結。當equals方法被重寫時,通常有必要重寫 hashcode 方法,以維護 hashcode 方法的常規協定,該協定宣告相等物...

類和物件 匯入篇

2 深入理解物件導向 3 用類和物件的思想實現乙個單鏈表 在我們之前對c的學習過程中都是使用的面向過程的程式設計思想,仔細回憶一下我們面向過程的思維方式,我們的關注點在於問題解決的流程,重在這個過程的控制需要使用大量的函式,將大問題拆分開來。我們主要通過控制模組的執行順序來解決問題。這樣做的優點就是...