物件導向
類就是物件在程式中的模擬實現,類決定了物件將要擁有的屬性和行為
類是一種資料型別,使用者自定義的資料型別
類的組成:字段、屬性、方法、建構函式等
物件時具體的,是類的具體例項。物件具有屬性(特徵)和方法(行為)
一、物件導向的三大特徵:
1. 封裝
類和物件本身就是封裝的體現
(1)屬性封裝了字段
(2)方法的多個引數封裝成了乙個物件
(3)將一堆**封裝到了乙個方法中
(4)將一些功能封裝到了幾個類中
(5)將一些具有相同功能的**封裝到了乙個程式集中(dll、
exe),並且對外提供統一的訪問介面(屬性名、方法名等)
(6)封裝減少了大量的冗餘**
2. 繼承
(1)繼承是指類與類之間的關係
(2)繼承帶給我們的好處
① 繼承減少了類中的冗餘**
② 讓類與類產生了關係,為多型打下了基礎
(3)繼承的特性
① 單根性
:乙個子類只能有乙個父類
② 傳遞性:爺爺類
爹類兒子類
(4)裡式轉換
指定乙個父類型別,指向乙個子類的物件
/ 將子類物件賦給父類
只要子類繼承父類,那麼子類的物件可以賦值給父類
① 子類可以賦值給父類
② 如果父類中裝的是父類物件,則可以將這個父類轉換為對應的子類物件
③ 裡式轉換關鍵字
1. is:返回
bool型別,
指示是否可以做這個轉換
2. as:如果轉換成功
,則返回物件
,否則返回
null
④ 作用:我們可以將所有的子類都當做是父類來看
,針對父類進行程式設計
,寫出通用的**
,適應需求的不斷變化
3. 多型
(1)多型的作用:把不同的子類物件都當做父類來看,可以遮蔽不同子類物件之間的差異,寫出通用的**,做出通用的程式設計,以適用需求不斷變化
(2)多型就是指不同的物件收到相同的訊息時,會產生不同的行為
,同乙個類在不同的場合下表現出不同的行為特徵
二、虛方法
1. 虛方法需要注意的幾點
(1)父類中如果有方法需要讓子類重寫,則可以將該方法標記為virtual
(2)虛方法在父類中必須有實現,哪怕是空實現
(3)虛方法子類中可以重寫(override),也可以不重寫
三、抽象類
抽象類中可以有抽象方法,也可以沒有抽象方法,抽象方法不能實現
1. 抽象方法:
(1)抽象方法需要用abstract關鍵字標識
(2)抽象方法不能有任何方法實現
(3)抽象成員必須包含在抽象類中
(4)由於抽象方法沒有任何實現,所以子類必須將抽象方法重寫
(5)抽象類不能例項化
(6)抽象類中可以包括抽象方法,也可以包括非抽象方法
(7)抽象類不能為靜態類,即不能用static修飾
(8)抽象類有建構函式,雖然不能被例項化
(9)抽象成員的訪問修飾符不能是private
(10)子類繼承抽象類後,必須把父類中的所有抽象成員都重寫,除非子類也是乙個抽象類,則可以不重寫
(11)父類不確定子類如何實現自己的行為,就將其行為定義為乙個抽象的函式
四、介面
1. 介面中只能包含方法(屬性、事件、索引器也都是方法)
2. 介面中的方法不能有任何實現
3. 介面不能被例項化,也就是說介面不能(new)建立物件,跟抽象類一樣,因為建立物件沒有意義
4. 介面是一種規範也是一種能力
5. 介面具有功能單一性
6. 介面中的成員不能有任何訪問修飾符(預設為public)
7. 繼承介面的子類必須將介面中的所有成員方法都實現
8. 子類實現介面的方法時,不需要任何關鍵字,直接實現即可
9. 介面存在的意義就是為了多型
五、關鍵字
1. new
① 建立物件
——》在堆中開闢空間
——》在開闢的堆空間中建立物件
——》呼叫物件的成員
② 隱藏父類的成員
2. this
① 代表當前類的物件
② 顯示的呼叫用自己的建構函式
3. base
① 顯示呼叫父類的建構函式
② 呼叫父類的成員
物件導向(繼承 抽象 介面)
一 繼承的好處 1.提高 的復用性。2.讓類與類之間產生了關係,有了這個關係,才有了多型的特性。二 如何使用乙個繼承體系中的功能那?想要使用體系,先查閱體系最父類的描述,因為最父類中定義的是該體系中的共性功能。通過了解共性功能,就可以知道該體系的基本功能。那麼這個體系已經可以基本使用了。三 那麼在具...
java 物件導向 介面 抽象
乙個物件例項化過程 person p new person 1,jvm會讀取指定的路徑下的person.class檔案,並載入進記憶體,並會先載入person的父類 如果有直接的父類的情況下 2,在堆記憶體中的開闢空間,分配位址。3,並在物件空間中,對物件中的屬性進行預設初始化。4,呼叫對應的建構函...
物件導向 OOP中的抽象類,介面以及多型
抽象類與抽象方法 1 什麼是抽象方法?沒有方法體 的方法,必須使用abstract關鍵字修飾,這樣的方法,我們稱之為抽象方法。abstract function say 2 什麼是抽象類?包含抽象方法的類就是抽象類,抽象類必須使用abstract關鍵字修飾 abstract class person...