物件導向程式設計三大特性

2022-09-12 14:39:29 字數 2602 閱讀 9242

類和物件的關係:

類:而物件則是以類為模板所建立的。

類的組成

物件建立記憶體模型

(1)當程式開始執行,方法區以載入好程式所需類的位元組碼檔案。

(2)棧記憶體引導程式,當執行到需要建立物件時,會在堆記憶體中建立物件,此時物件的成員變數為初始值,成員方法為位址,指向方法區中的類成員方法。

(3)堆記憶體中所建立的物件指向棧記憶體中引用,然後賦值。可以通過物件引用找到堆記憶體中的成員變數進行賦值,使用成員方法則是通過引用找到堆記憶體中的成員方法位址,然後在方法區中找到具體的成員方法。

成員變數和區域性變數的區別:

(1)位置不同: 成員變數在方法外,區域性變數在方法內部或方法宣告上

(2)記憶體位置不同:成員變數在堆記憶體中,區域性變數在棧記憶體中

(3)宣告週期不同:成員變數隨物件的存在而存在,區域性變數隨方法的呼叫而存在,方法呼叫結束就消失

(4)初始化值不同:成員變數預設初始化值,區域性變數沒有預設初始值,必須自定義初始化賦值才能使用。

物件導向三大特性之一———封裝

將成員變數隱藏在物件內部,外界無法直接操作,通過該類提供的方法來實現對隱藏資訊的操作和訪問,封裝通過get、set方法的方式來控制成員變數的操作,提高了**的安全性和復用性。

封裝的思想實現類高內聚、低耦合

this關鍵字

this修飾的變數用於代指成員變數,其主要作用是區分成員變數和區域性變數的重名問題。

this的本質其實上是當前呼叫方法的引用,那個物件呼叫的方法,this就代表那個物件。

static關鍵字

可以修飾成員方法,成員變數。

**物件導向程式設計三大特徵之一——繼承

super關鍵字

super代表父類儲存空間的表示,可以理解為父類物件引用

this.成員變數——訪問本類成員變數

super.成員變數——訪問父類成員變數

this.成員方法——訪問本類成員方法

super.成員方法——訪問父類成員方法

this()訪問本類構造方法

super()訪問父類構造方法

子類會繼承父類中的資料,還會使用父類的資料。所以,子類初始化之前,一定會先完成父類資料的初始化,每個子類構造方法的第一條語句預設都是super()

如果父類中沒有無參構造方法,只有有參構造方法,該怎麼辦呢?

1.通過使用super關鍵字去顯示的呼叫父類的帶參構造方法

2.子類通過this去呼叫本類的其他構造方法,本類其他構造方法再通過super去手動呼叫父類的帶參的構造方法。

this() super()必須放在構造方法的第一行,二者不能共存。

方法重寫注意事項

抽象類

提到抽象類就不得不提到模板設計模式

模板設計模式

把抽象類整體看做乙個模板,模板中不能決定的東西定義成抽象方法,讓使用模板的類(繼承抽象類的類)去重寫抽象方法實現需求。

模板設計模式已經定義了通用結構,使用者只需要關心自己需要實現的功能即可。

final關鍵字

區域性**塊

方法中定義

構造**塊

類中方法外定義

靜態**塊

介面

多型

同乙個物件,在不同時刻表現出不同形態,

多型的前提是:

內部類

在乙個類中定義乙個類

內部類可以直接訪問外部類的成員,包括私有。外部類要訪問內部類的成員時要建立物件才能訪問。

成員內部類

和變數、方法乙個層級。

class outer 

}public void method()

}public class innerdemo

}

**區域性內部類**

* 區域性內部類是在方法中定義的類 方法塊中定義的類

* 區域性內部類外界無法直接使用,需要在內部建立物件並使用

* 該類可以直接訪問外部類成員,也可以訪問方法內的區域性變數

**匿名內部類**

匿名內部類的前提是存在乙個類或者介面,這裡的類可以是具體類也可以是抽象類。

new 類名()

new 介面名()

lambda表示式

(形式引數)->

形式引數:如果有多個引數,引數之間用逗號隔開,沒有引數留空;

->:固定寫法,代表指向動作

**塊:具體方法

lambda表示式和匿名內部類的區別

物件導向程式設計三大特性(csharp)

1.封裝 2.繼承 3.多型 不扯別的,看 就好 using system 程式的宣告 namespace demo0709 交通工具類 class transport public transport int id,string name public override string tostri...

物件導向三大特性

什麼是物件導向呢?之前我們做一件事的時候,常常是確定,先幹什麼,然後怎麼做,最後可以完事了。其實我們不妨這麼想一下,我們做事的時候是可以這樣的 這件事中涉及了什麼物件角色?如果我要把這件事做成那麼就需要物件之間是如何協作的?第二種方法,就是今天說的物件導向的方法了,好處正在慢慢體會。今天我想說的物件...

物件導向三大特性

0x00 嘮嘮叨叨 只是做乙個概念的記錄 0x01 物件導向的三大特性 n 封裝 把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法只讓可信的類或者物件操作,對不可信的進行資訊隱藏。類將成員變數和成員函式封裝在類的內部,根據需要設定訪問許可權,通過成員函式管理內部狀態。n 繼承 繼承所表達的是類...