什么是OOP
面向對象程序設計(Object Oriented Programming,OOP)
?什么是對象
萬事萬物皆對象
對象強調的是一個具體的個體
例如:楊樹就不是對象,我家門前第一顆楊樹就是對象。
對象由什么構成
對象由狀態(tài)和行為構成。
對象的狀態(tài)是指對象的數(shù)據,對象的狀態(tài)由變量表示,也叫對象的屬性。
對象的行為是指對象的功能,對象的行為由方法表示。
例如:

對象是怎么創(chuàng)建的
對象是由類實例化時創(chuàng)建的,因此創(chuàng)建對象必須先定義類。
類是對象的模板,類中定義了什么屬性和方法,由這個類實例化的對象就有什么屬性和方法。
類是一次性定義,對象可以多次創(chuàng)建。
什么是類
類是具有相同的狀態(tài)和相同的行為的一組對象的集合。
類和對象是什么關系
類和對象的關系就如同模具和用這個模具制作出來的物品之間的關系。一個類給出它的全部對象的一個統(tǒng)一的定義,而它的每個對象則是符合這種定義的一個實體(也稱作實例),因此類和對象的關系就是抽象和具體的關系。
定義類
類的構成
類是由屬性和方法構成的
類的定義

注意:
1、public類的類名必須和類所在文件的文件名一致
2、如果不是public類,那么類名與類所在的文件名可以不一致
3、類名的命名規(guī)范是:帕斯卡命名法

實例化對象
通過類創(chuàng)建對象的過程稱為類的實例化。實例化的結果是產生了一個實例,實例也叫對象。
實例化對象
語法
new就是實例化的意思,new也是分配內存的意思

示例

對象的內存分配

使用對象
對象調用屬性和方法是使用成員運算符.來完成的
對象調用屬性

對象調用方法

類和對象的區(qū)別
類是對某一類事物的抽象描述,不是具體的個體
對象是對某一事物的具體描述,是具體的個體
面向對象與面向過程
面向過程與面向對象都是我們編程中,編寫程序的一種思維方式。
面向過程的程序設計方式
特點是按照步驟思考問題,強調步驟。
例如:求班級學生平均分,面向過程的做法是
第一步:計算班級總分
第二步:總分除以班級人數(shù)
第三步:顯示平均分
面向對象的程序設計方式
特點是分析有什么對象,對象有什么數(shù)據,對象有什么操作。
例如:求班級學生平均分,面向對象的做法是
分析有什么對象:有班級對象,有學生對象
班級對象有什么數(shù)據:班級對象中有多名學生;班級對象有什么操作:班級對象有計算平均分的操作。
學生對象有什么數(shù)據:學生對象有成績;學生對象有什么操作:無
現(xiàn)在主流的思想是面向對象,而實際的情況是軟件設計的宏觀層面是面向對象的,微觀層面依然是面向過程的(方法內部的代碼還是按照步驟編寫的)。
OOP有什么特性
1、封裝:

為了保護數(shù)據(這里的數(shù)據指的是對象的屬性,而不是方法的局部變量)通過不同的訪問修飾符來決定數(shù)據的讀寫權限。
訪問修飾符:
public:公共的 public修飾的屬性沒有訪問限制,是最寬松的封裝。
protected:受保護的 protected修飾的屬性同包的類和子類都能訪問。
默認修飾符——default:(什么都不寫)只有同包的類能夠訪問。
private:私有的? private修飾的屬性只能在類中被訪問,類外無法訪問,是最嚴格的封裝。
(private不能修飾類)
2、繼承:
子類 extends 父類

子類可以調用父類的方法和屬性,也可以有自己新定義的方法和屬性,子類是對父類的拓展。
繼承的出現(xiàn)提高了代碼的復用性,提高了軟件的開發(fā)效率。
繼承也讓類與類之間產生了關系,提供了多態(tài)的前提。
3、多態(tài):
通過父類引用指向子類對象,實現(xiàn)了同樣的代碼每次會生成不同的結果(無法做出具體預測)
實現(xiàn)方法:
1、方法重寫(公認的多態(tài))
2、方法重載(非公認的多態(tài))

什么是方法重載
方法重載的定義
在同一個類中:同名不同參,與返回值無關。
例如:

方法重載的調用
方法重載根據參數(shù)匹配原則進行調用
