這篇博客的意義就是複習一下面向對象的一些基礎內容,以幫助我更好的學習設計模式。
概念
面向對象(Object Oriented)是軟件開發方法。面向對象的概念和應用已超越了程序設計和軟件開發,擴展到如數據庫系統、交互式界面、應用結構、應用平臺、分佈式系統、網絡管理結構、CAD技術、人工智能等領域。面向對象是一種對現實世界理解和抽象的方法,是計算機編程技術發展到一定階段後的產物。
類與實例
對象(Object)是一個自包含的實體,用一組可識別的特性和行爲來標識。
類是具有相同的屬性和功能的對象的抽象的集合。
實例就是一個真實的對象。實例化就是創建對象的過程,使用new關鍵字來創建。
舉個例子來說吧:動物是一個大類,而狗就是它的一個對象;一個銀行帳戶(Account)是一個class的話,可以把他的利息設爲類變量(static float interest),而持有人是實例變量(String name), 這樣只要改變 Account.interest就可以把所有人的利息都該了,而持有人的姓名則是屬於單獨的帳戶的。
在類中需要注意:
1.類名稱的首字母要大寫,多個單詞則各個首字母大寫;
2.對外公開的方法需要用‘public’修飾符。
構造方法與方法重載
構造方法又稱構造函數,其實就是對類進行初始化。構造方法與類同名,無返回值,也不需要void,在new時候調用。
方法重載提供了創建同名的多個方法的能力,但這些方法需使用不同的參數類型。
方法重載時需要注意:
1.兩個方法必須要方法名相同,但參數類型或個數必須要有所不同;
2.方法重載可在不改變原方法的基礎上,新增功能。
封裝
每個對象都包含它能進行操作所需要的所有信息,這個特性稱爲封裝。比如一臺電視機、風扇……的能夠完成所有操作的東西。
優點:
1.良好的封裝能夠減少耦合;
2.類內部的實現可以自由的修改;
3.類具有清晰的對外接口。
繼承
對象的繼承代表了一種‘is-a’的關係,如果兩個對象A和B,可以描述爲‘B是A’,則表明B可以繼承A。還可以理解爲是對被繼承者的特殊化,因爲它除了具備被繼承者的特性外,還具備自己獨有的個性。
其實我認爲這部分內容是很好理解的,比如人與教師、車與轎車、魚與比目魚……,這些例子都是說明了繼承的關係。
多態
多態是指同樣的信息被不同類型的對象接收時導致完全不同的行爲,表示不同的對象可以執行相同的動作,但要通過它們自己的實現代碼來執行。
特點:
1.子類以父類的身份出現;
2.子類在工作時以自己的方式來實現;
3.子類以父類的身份出現時,子類特有的屬性和方法不可以使用;
4.父類必須將該成員聲明爲虛擬的(這是爲了使子類的實例完全接替來自父類的類成員);
5.子類可以選擇使用override關鍵字,將父類實現替換爲它自己的實現。
接口
接口是把隱式公共方法和屬性組合起來,以封裝特定功能的一個集合。一旦類實現了接口,類就可以支持接口所指定的所有屬性和成員。比如燈的開關就是一個接口,它讓燈與外界連接起來。
特點:
1.聲明接口在語法上與聲明抽象類完全相同;
2.實現接口的類就必須要實現接口中所有的方法和屬性;
3.一個類可以支持多個接口,多個類也可以支持相同的接口。
規範:
接口的命名,前面要加一個大寫字母”I",這是規範。
注意:
接口要用interface聲明,而不是class,接口名稱前要加“I",接口中的方法或屬性前面不能
有修飾符、方法沒有方法體。
學無止境,你需要不斷地練習實踐纔可能真正成爲優秀的軟件工程師。