1、物件導向程式設計的目的
用人類思維的方式編寫**,並交給計算機執行
2、物件導向三大特徵
封裝、繼承、多型
3、什麼是類?什麼是物件?類和物件的區別?
a)類是模具,建立物件的模具,抽象的。
類是一種資料型別,使用者自定義的資料型別(定義了要開闢多大記憶體)
類組成:字段(類中的變數,如,int num、string name等)、屬性、方法、建構函式等
b)物件是具體的,是類的具體例項。物件具有屬性(特徵)和方法(行為)
c)類是物件的型別,物件叫做類的例項;類不會佔據記憶體空間,物件需要佔據記憶體空間。
d)描述乙個物件可以從下面2個方面入手:
a. 物件的特徵,這些特徵有什麼特點(如,一位歌手的身高)
b. 它有什麼樣的行為,它會幹什麼(如,一位歌手會唱歌)
注:類的成員變數存在於堆空間,方法中的區域性變數存在於棧空間
成員變數不必須賦值,區域性變數必須賦值
在定義類的時候,乙個類最好定義在乙個.cs檔案中,檔名與類名相同。
4、c#中的4個訪問修飾符
public: 可以在任何地方被訪問
private: 只能在本類中被訪問
protected: 與private類似,子類可以訪問父類的protected成員,但不能訪問private成員
internal: 只能在本專案中被訪問
protected internal : protected + internal
定義乙個類時,不允許使用private、protected修飾符,它的預設訪問修飾符是internal。
類的成員變數預設修飾符是
private
5、屬性 (屬性的本質
-就是兩個方法)
a)屬性:乙個具有get/set方法的變數,這個變數用於保護類中的乙個私有變數不會受到非法的修改,限制了該成員變數的訪問規則。
在屬性中,使用value來儲存使用者賦的值
b)屬性存在的意義:是為了保護與之相對應的字段.保證對字段的讀取和賦值符合要求。
c)屬性可分為:讀寫、唯讀、只寫(get和set訪問器)
d)將類中的某個私有變數設定為屬性:
6、類的例項化
語法:類例項名= new類();
在初始化類物件的時候,類的成員會被賦予的值: 數字型別初始化為 0 / 0.0;string型別初始化成 null;char型別初始化為 \0
7、建構函式
它的名字必須與類名完全相同,在建立物件時用來初始化物件,為物件成員賦初值,是一種特殊的方法。
(1)建構函式的特點:
a)沒有返回值
b)函式名與類名完全相同
c)類裡若無宣告建構函式,缺省會建立乙個無參的建構函式
d)建構函式可以過載,也就是有多個引數不同的建構函式
(2)建構函式的呼叫順序:
當我們例項化子類的物件時,會先建立子類物件,然後準備呼叫子類的建構函式。執行子類建構函式之前,會先建立父類物件,並執行父類建構函式,最後再執行子類建構函式。
注意:一旦我們寫了乙個構造方法後,系統原先預設給我們新增的那個無引數得構造方法就不會再為我們新增了。
在工作中拿到乙個類後,首先要關心的是這個類有哪些構造方法,這些方法的引數是什麼,怎麼用的。
8、析構函式
與建構函式相對應的是析構函式,但在c#中幾乎不使用析構函式,因為c#中有了一種垃圾**機制。
8、this關鍵字
用來區別區域性變數和成員變數重名問題
a)表示當前類,作為當前類的物件,可以呼叫類中的成員。this.成員(呼叫成員,自己)
b)呼叫本類的其他建構函式。:this()(呼叫建構函式,自己)
注:this代表的是儲存當前物件的堆位址
c)this代表其所在函式所屬物件的引用,即哪個物件呼叫this所在的函式,this就代表哪個物件本身
注意:不能將關鍵字this用在靜態建構函式和靜態函式成員中,也不能在其它地方使用
9、base關鍵字專門用來在子類訪問父類成員
base.識別符號:「.」呼叫父類同名屬性、同名函式、建構函式
a)base
呼叫父類中非私有的成員(呼叫成員,父類)base點不出子類獨有成員。
呼叫父類中的建構函式(呼叫建構函式,父類)
當呼叫從父類中繼承過來的成員的時候,如果子類沒有重寫則this.成員;與base.成員,沒有區別。
b)如果子類重寫了父類成員,則this.成員;呼叫的是子類重寫以後的。base.成員;呼叫的依然是父類的成員。
c)子類建構函式預設呼叫父類的無參建構函式;
d)如果父類沒有無參建構函式,則必須指明呼叫父類哪個建構函式
注:this和base的訪問
10、命名空間就相當於一套虛擬的資料夾
命名空間裡面的類,就相當於是資料夾裡的檔案
可以認為類是屬於命名空間的。
如果在當前專案中沒有這個類的命名空間,需要我們手動的匯入這個類所在的命名空間。
引用命名空間的方法:
1)、用滑鼠去點
2)、alt+shift+f10
3)、記住命名空間,手動的去引用
在乙個專案中引用另乙個專案的類
1)、新增引用
2)、引用命名空間
11、封裝
(1)概念:隱藏物件的字段和功能的實現細節,只對外提供公共的訪問方式
封裝這個特性,它隱藏了物件的字段和方法的實現細節,只對外提供公共的訪問方式。
方法的封裝:別人不需要知道這個方法是怎麼實現的,只要知道怎麼呼叫這個方法就可以了。
(2)類和物件本身就是封裝的體現。
(3)屬性封裝了字段、方法和字段封裝成了乙個物件、將一堆業務單一的**封裝到了乙個方法中、將乙個功能封裝到了幾個類中、將一些具有相同功能的**封裝到了乙個程式集中(dll、exe),並且對外提供統一的訪問介面。(屬性名、方法名等。)
物件導向 基本概念
物件 由其責任定義的,能夠自己負責自己,從而簡化了使用物件的控制程式的任務。將責任轉移到更區域性的層次。類 class 根據物件所具有的責任定義物件的型別。責任 行為或狀態,這些分別是由方法和或資料實現的。具體類 concrete cass 實現抽象類某一特定型別行為的類,具體類是乙個概念特定不變的...
物件導向基本概念
物件導向是相對面向過程而言 物件導向和面向過程都是一種思想 面向過程強調的是功能 行為 物件導向 將功能封裝進物件,強調具備了功能的物件 物件導向是基於面向過程的 類的概念 具有相同屬性的一類事物 物件的概念 就是對這乙個類的具體的描述 比如人類就是抽象的類,具體的某乙個人就是物件,對人這個類的具體...
C 基礎 物件導向的基本概念
內容摘抄與 大話設計模式 物件 是乙個自包含的實體,用一組可識別的特性和行為來標識.類 就是具有相同屬性和功能的物件的抽象的集合.構造方法 又叫建構函式,其實就是對類進行初始化,構造方法與類同名,無返回值,也不需要viod,在new的時候呼叫 方法過載 提供了建立同名的多個方法的能力,但這些方法需使...