1.類是什麼?
類就相當于模闆,就是把同一類的事物的共同特征進行的抽象。
類的建立和說明:
類是先根據一些具體的對象(實體的東西)來抽象出來的共同的特性,然後用代碼來表示.
在類中,用資料表示事物的狀态,用函數(方法)實作事物的行為動作。
當建立一個類時,系統會預設的添加一個構造函數,如果使用者自己寫一個構造函數則會覆寫這個預設的構造函數。當然構造函數也是可以重載的。
構造函數的特點:
-
- 構造函數名必須與類名相同。
- 不能有任何的傳回值類型。
- 通路修飾符一般都是Public.
如果一個類中有一個構造函數,并且這個構造函數用的Private修飾的,那麼這個類是不能執行個體化的。因為要執行個體一個類時,必須去調用這個類的構造函數。是以可以寫在這個類中寫一個靜态的方法,在方法中來執行個體這個類。
方法的重寫:
是與參數的個數和參數的類型有關,與傳回值沒有關系。
說到了類和方法,那麼就有必要的說一下變量的作用域了:
是聲明這個變量與最近的大括号的内部。
局部變量必須要先指派後才能夠使用。
而類的成員變量是可以不用指派,就可以先使用,因為構造函數是會初始化這個變量的。
如果在一個方法中聲明了一個與類的成員變量相同的變量,那麼在使用時,調用類的成員變量要用this 與之區分開,如果不用this 那麼方法中的變量要優先于成員變量。This就是表示目前類的對象。
2.對象是什麼?
對象就是指某一個具體的事務。在程式中它是類的一個執行個體。簡單的說就是New出來的。
3.面向對象是什麼?
面向對象是一種分析問題的方式 主要的作用就是增加程式的可擴充性。
面向對象的優點:
它能夠建構與現實世界相對應的問題模型,并保持他們的結構、關系和行為模式。
面向對象的三大特性: 封裝、繼承、多态。
封裝:
就是把事物的狀态和行為封裝在類中,使用類的人不需要知道類内部是怎麼實作的,隻要調用其中的屬性和方法實作功能就行了。
在程式中封裝具體的實作:
-
- 屬性封裝了字段。
- 将多個方法封裝成一個對象。
- 将一堆代碼封裝到一個方法中。
- 将一些功能封裝到了幾個類中。
- 将一些具有相同功能的代碼封裝到一個程式集中(dll 、exe),并且對外提供統一的通路接口。(例:公司的每個部門的部門經理,與其他部門協作。)
繼承:
它是指類與類之間的關系,并且類是不能互相繼承的。如果一個類沒有顯示繼承自任何一個類,預設是繼承Object類(Object類是所有類的的父類)。如果顯示指定了目前類的繼承自某個類,則将覆寫預設的Object類。
繼承的優點 :
-
- 代碼的重用
- 多态(裡氏替換原則LSP)(程式的可擴充性、靈活性),下面說明
- 子類繼承父類的屬性、方法、字段,使建立子類變得很簡單,實瑞了代碼的重用,和多态。但要記的子類隻能繼承父類中非私有的東西。
繼承後關于構造函數的問題:
1.類的構造函數是不能被繼承的。隻能在子類中去調用父類的構造函數。
2.子類的構造函數會預設去調用父類中的無參數的構造函數,當然也可以自己來設定調用父類的哪一個構造函數。
(1)當在父類中寫了帶參的構造函數,記的要再增加一個無參的構造函數,(這也說明構造函數是可以重載的。)因為當自己在類中寫了構造函數會覆寫系統預設的構造函數。
(2)當然也可以在子類的構造函數加上:base(父類構造函數要傳的參數),這樣就是調用父類中帶參數的構造函數了。
3.在目前類的構造函數中去也可以去調用目前類的另一個構造方法。用:this(參數),這樣可以少寫構造函數裡的内容了。
注意:在構造函數中如果用this()就不能再用:base(),相反也是一樣的。
當調用從父類中繼承過來的成員的時候,如果子類沒有重寫則this.成員與base.成員是沒有差別的。如果子類重寫了父類成員,則this.成員,調用的是子類重寫以後的。Base.成員,調用的依然是父類的成員。
類的單根繼承性:一個子類隻能繼承一個父類。
類的傳遞性:子類繼承父類的方法和屬性等,同時還繼承了父類的父類的屬性和方法。
重要的特性: 父類對象可以引用子類執行個體,它編譯的是父類對象,但運作卻是一個子類對象。具體特征:
被聲明為父類對象,擁有父類的屬性等,占用子類的記憶體空間,子類方法覆寫父類的方法時,此時對象調用的是子類的方法;否則自動調用繼承父類的方法,也就是說父類不能去調用子類中獨有的成員。
關于父類中私有成員是否被繼承的問題
個人觀點:所有私有成員沒有被繼承。是指沒有辦法去通路,并不代表記憶體中不存在。
例如:兒子繼承了父親的一千萬,但不能花。
通路級别的問題:(兒子能去的地方爹一定要能去)
子類的通路級别必須比父類的級别要低或相同。
目前類中的成員的通路級别不能比所對應的類型通路級别高(包括方法的參數。)
多态:
多态就是多種表現的形态, 具體的是指不同對象收到相同消息時,會産生不同行為,同一個類在不同的場合下表現出不同的行為特征。
實作多态的主要手段: 1.虛方法virtual, 2抽象方法Abstract 3接口。
虛方法使用:
-
-
- 虛方法必須有方法體,當然方法體中可以不寫内容
- 子類繼承父類,其實父類的虛方法可以重寫,也可以不重寫。
- 虛方法可以寫在普通類中
-
虛方法與抽象方法的差別:
1.虛方法必須有方法體,抽象方法不能有方法體。
2.抽象方法必須在抽象類中聲明,虛方法可以出現在抽象類中也可以在普通類中聲明。
3.抽象方法必須在子類中重寫,虛方法可以被重寫,也可以不重寫。
多态的作用:
把不同的子類對象當作父類來看,可以屏蔽不同子類對象之間的差異,寫出通用的代碼,做出通用的程式設計,以适應需求的不斷變化。
多态的含義:
使得能夠利用基類的指針來引用不同子類的對象,以及根據所引用對象的不同,以不同的方式執行相同的操作。
總結的說多态的意義就是為了程式可擴充性,并且節省成本和提高效率。
每一天都是嶄新的,我們的目标有多遠,我們就能走多遠,堅持!!