物件導向
類就是物件在程式中的模擬實現,類決定了物件將要擁有的屬性和行為
類是一種資料型別,使用者自定義的資料型別
類的組成:字段、屬性、方法、建構函式等
物件時具體的,是類的具體例項。物件具有屬性(特徵)和方法(行為)
一、物件導向的三大特徵:
封裝類和物件本身就是封裝的體現
(1)屬性封裝了字段
(2)方法的多個引數封裝成了乙個物件
(3)將一堆**封裝到了乙個方法中
(4)將一些功能封裝到了幾個類中
(5)將一些具有相同功能的**封裝到了乙個程式集中(dll、
exe),並且對外提供統一的訪問介面(屬性名、方法名等)
(6)封裝減少了大量的冗餘**
繼承(1)繼承是指類與類之間的關係
(2)繼承帶給我們的好處
① 繼承減少了類中的冗餘**
② 讓類與類產生了關係,為多型打下了基礎
(3)繼承的特性
① 單根性
:乙個子類只能有乙個父類
② 傳遞性:爺爺類
爹類兒子類
(4)裡式轉換
指定乙個父類型別,指向乙個子類的物件
/ 將子類物件賦給父類
只要子類繼承父類,那麼子類的物件可以賦值給父類
① 子類可以賦值給父類
② 如果父類中裝的是父類物件,則可以將這個父類轉換為對應的子類物件
③ 裡式轉換關鍵字
is:返回
bool型別,
指示是否可以做這個轉換
as:如果轉換成功
,則返回物件
,否則返回
null
④ 作用:我們可以將所有的子類都當做是父類來看
,針對父類進行程式設計
,寫出通用的**
,適應需求的不斷變化
多型(1)多型的作用:把不同的子類物件都當做父類來看,可以遮蔽不同子類物件之間的差異,寫出通用的**,做出通用的程式設計,以適用需求不斷變化
(2)多型就是指不同的物件收到相同的訊息時,會產生不同的行為
,同乙個類在不同的場合下表現出不同的行為特徵
二、虛方法
虛方法需要注意的幾點
(1)父類中如果有方法需要讓子類重寫,則可以將該方法標記為virtual
(2)虛方法在父類中必須有實現,哪怕是空實現
(3)虛方法子類中可以重寫(override),也可以不重寫
三、抽象類
抽象類中可以有抽象方法,也可以沒有抽象方法,抽象方法不能實現
抽象方法:
(1)抽象方法需要用abstract關鍵字標識
(2)抽象方法不能有任何方法實現
(3)抽象成員必須包含在抽象類中
(4)由於抽象方法沒有任何實現,所以子類必須將抽象方法重寫
(5)抽象類不能例項化
(6)抽象類中可以包括抽象方法,也可以包括非抽象方法
(7)抽象類不能為靜態類,即不能用static修飾
(8)抽象類有建構函式,雖然不能被例項化
(9)抽象成員的訪問修飾符不能是private
(10)子類繼承抽象類後,必須把父類中的所有抽象成員都重寫,除非子類也是乙個抽象類,則可以不重寫
(11)父類不確定子類如何實現自己的行為,就將其行為定義為乙個抽象的函式
四、介面
介面中只能包含方法(屬性、事件、索引器也都是方法)
介面中的方法不能有任何實現
介面不能被例項化,也就是說介面不能(new)建立物件,跟抽象類一樣,因為建立物件沒有意義
介面是一種規範也是一種能力
介面具有功能單一性
介面中的成員不能有任何訪問修飾符(預設為public)
繼承介面的子類必須將介面中的所有成員方法都實現
子類實現介面的方法時,不需要任何關鍵字,直接實現即可
介面存在的意義就是為了多型
五、關鍵字
new① 建立物件
——》在堆中開闢空間
——》在開闢的堆空間中建立物件
——》呼叫物件的成員
② 隱藏父類的成員
this
① 代表當前類的物件
② 顯示的呼叫用自己的建構函式
base
① 顯示呼叫父類的建構函式
② 呼叫父類的成員
怎麼理解封裝繼承多型
理解封裝 將類的屬性和操作屬性的方法封裝起來,訪問的時候,訪問自己封裝的介面。理解繼承 子類從父類繼承所有資訊,但不能訪問父類私有屬性和方法 子類可有新的屬性和方法 也可以重寫父類方法自己去實現。理解多型 編譯時多型和執行時多型 編譯時多型是過載,執行時多型是重寫 實現多型,需有兩個步驟 一是子類繼...
物件導向 封裝 繼承 多型
物件導向 封裝 繼承 多型物件導向 封裝 一 封裝 private 資料型別 名字 成員變數 public 預設一致 名字 屬性 set 類中不僅可以有成員變數和屬性,還可以有成員方法 訪問修飾符 4個 public 公共的,任何地方都可以訪問,但是需要引用 命名空間 private 私有的,類的內...
C 物件導向(封裝,繼承,多型)
c 封裝繼承多型總結 物件導向的三個基本特徵 物件導向的三個基本特徵是 封裝 繼承 多型。其中,封裝可以隱藏實現細節,使得 模組化 繼承可以擴充套件已存在的 模組 類 它們的目的都是為了 重用。而多型則是為了實現另乙個目的 介面重用!封裝 什麼是封裝?封裝可以隱藏實現細節,使得 模組化 封裝是把過程...