類和物件的關係:
類:而物件則是以類為模板所建立的。
類的組成
物件建立記憶體模型
(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 繼承 繼承所表達的是類...