物件導向的三大特性:封裝、繼承、多型。
抽象的概念:
在封裝的之前,還有乙個概念叫抽象。如果說物件導向有四大特徵的話,那麼就是抽象、封裝、繼承和多型。抽象使我們進行封裝的首要步驟。因為物件本身的狀態與行為,以及物件之間的關係,都是抽象的結果。沒有抽象,就沒有物件。但是我們一般情況下都把抽象歸為封裝之內,所以我們常說的物件導向的三大特徵是封裝、繼承、多型,從而少了抽象。
抽象是從眾多的事物中抽取出共同的、本質性的特徵,而捨棄其非本質的特徵。
例如蘋果、香蕉、生梨、葡萄、桃子等,它們共同的特性就是水果。得出水果概念的過程,就是乙個抽象的過程。
共同特徵是指那些能把一類事物與他類事物區分開來的特徵,這些具有區分作用的特徵又稱本質特徵。
所以抽象的過程也是乙個裁剪的過程,不同的、非本質性的特徵全部裁剪掉了。
所謂的共同特徵,是相對的,是指從某乙個刻面看是共同的。
比如,對於汽車和大公尺,從買賣的角度看都是商品,都有**,這是他們的共同的特徵,而從其他方面來比較是,他們則是不同的。
所以在抽象時,同與不同,決定於從什麼角度上來抽象。抽象的角度取決於分析問題的目的。
在軟體開發過程中,識別穩定的需求、識別核心的需求、識別概念性的需求、設計系統的架構、定義系統中構件之間的介面關係等等都是抽象的過程,都是反應系統的本質特徵的過程。
抽象的,才是穩定的,才是永恆的。 抽象的反義詞是具體。人員往往會說:「你講的太抽象了,能不能講的具體一點?」
在開發語言中,有抽象類,有具體類,具體類可以繼承自抽象類,可以例項化。抽象類可以派生出眾多的不同的具體類。
所謂:「一生二,二生三,三生萬物」。系統的穩定體現在抽象類,系統的變化體現在具體類。抽象類的層次要高於具體類。
系統因抽象而穩定,因抽象而生動。
我們在研究一類事物的時候,我們通常只關心我們研究該類事物中所關心的內容,比如這種事物它有什麼,或者會做什麼。這裡的有什麼指的就是他的成員字段,會什麼指的是成員方法。有時候我們不想讓使用者直接操作成員字段,通常我們會給字段封裝用訪問修飾符做限制,對於私有的字段我們可以把字段封裝成屬性,讓使用者通過操作屬性而對成員字段進行操作。
抽象的過程我們可以必做是在設計乙個模具的圖紙。我們要考慮到我們將要使用到哪些字段,哪些方法。
封裝概念
封裝:每個物件都包含有它能進行操作的所有資訊,這個特性稱為封裝。這樣的方法包含在類中,通過類的例項來實現。
封裝就是將抽象得到的資料和行為(或功能)相結合,形成乙個有機的整體,也就是將資料與運算元據的源**進行有機的結合,形成「類」,其中資料和函式都是類的成員。封裝的目的是增強安全性和簡化程式設計,使用者不必了解具體的實現細節,而只是要通過 外部介面,一特定的訪問許可權來使用類的成員。
通過封裝使一部分成員充當類與外部的介面,而將其他的成員隱蔽起來,這樣就達到了對成員訪問許可權的合理控制,使不同類之間的相互影響減少到最低限度,進而增強資料的安全性和簡化程式的編寫工作。
封裝其實可以必做是在根據模具圖紙在刻畫乙個模具的過程。
在物件導向的思想中最核心的就是物件,為了在程式中建立物件,首先需要定義乙個類。類是物件的抽象,它用於描述一組物件的共同特徵和行為。類中可以定義欄位和方法,其中字段用於描述物件的特徵,方法用於描述物件的行為。
比如我們來抽象乙個animal類
我們先分析對於animal有什麼,animal會什麼
[訪問修飾符] [修飾符] class 類名 [: 《基類名》] [ ,《介面列表》]
在c#中,物件是通過類建立出來的。因此,在程式設計時,最重要的就是類的設計。接下來通過乙個具體的案例來學習如何設計乙個類。
假設要在程式中描述乙個學校所有學生的資訊,可以先設計乙個學生類(student),在這個類中定義兩個欄位name和age分別表示學生的姓名和年齡,定義乙個方法introduce()表示學生做自我介紹。
public
class student
}
在例子的student類中,定義了兩個欄位name和age,其中name欄位為string型別,在c#中使用string型別的變數來引用乙個字串,具體示例如下。
string name = 「李芳」;
在上乙個小節中出現的關鍵字private和public都屬於修飾符,用於限定外界對類和方法的訪問許可權。在 c#中,訪問修飾符共有四種,分別是 public、protected、internal、private,使用這四種訪問修飾符可以組成五個可訪問級別,具體如下。
● public:最高訪問級別,訪問不受限制。
● protected:保護訪問級別,受保護的成員可由自身及派生類訪問。
● internal:內部訪問級別,只有在同一程式集中,內部型別或者成員才可訪問。
● protected internal:內部保護級別,訪問僅限於當前程式集,可由自身及派生類訪問。
● private:私有訪問,最低訪問級別,私有成員只有在宣告它們的類和結構中才可訪問。
訪問修飾符除了可以修飾類和方法,還可以修飾字段、屬性、索引器,但不可以修飾命名空間、區域性變數、方法引數。
應用程式想要完成具體的功能,僅有類是遠遠不夠的,還需要根據類建立例項物件。在c#程式中可以使用new關鍵字來建立物件,具體格式如下。
類名 物件名稱= new 類名();
例如建立person類的例項,具體**如下。
person p = new person();
上面的**中,「new person()」用於建立person類的乙個例項物件,「person p」則是宣告了乙個person型別的變數p。中間的等號用於將person物件在記憶體中的位址賦值給變數p,這樣變數p便持有了person物件的引用。為了便於描述,在本教材接下來的章節中,會將變數p引用的物件簡稱為p物件。記憶體中變數p和物件之間的引用關係如圖所示。
在建立person物件後,可以通過物件的引用來訪問物件所有的成員,具體格式如下。
物件引用.物件成員
Python入門 物件導向
物件 有具體特徵和行為操作的事物 有具體 特徵 屬性和 行為 方法的物件 將物件行為特徵抽象化用 表示 1 還原生活場景 簡單的 操作 基礎語法,堆疊功能 變數 資料型別 運算 if while 函式式程式設計 將所有要處理的事情,開始封裝成具備一定處理功能的函式,呼叫執行 2 面向過程程式設計 開...
C 入門物件導向基礎知識
隨著語言學習的比較多,而且都處於基礎階段,基礎容易被忘記,做個例子,複習用。其中的內容和python比較相似,畢竟都是物件導向。include includeusing namespace std define max 10 class box box box int age 建構函式 box bo...
快速入門物件導向設計
物件導向設計把握乙個重要的經驗 誰擁有資料,誰就對外提供操作這些資料的方法。幾個典型的案例 人在黑板上畫圓 有人物件 黑板物件 圓物件,畫圓這個動作必須用到了圓心座標x y和半徑r,而x y r是圓內部的資料,圓擁有這些資料,所以這個動作時圓的,而不是黑板的,更不是人的。列車司機緊急剎車 有列車物件...