面向過程:根據(jù)業(yè)務(wù)邏輯從上到下寫代碼焰手。
面向過程編程最易被初學(xué)者接受,其往往用一長段代碼來實現(xiàn)指定功能,開發(fā)過程的思路是將數(shù)據(jù)與函數(shù)按照執(zhí)行的邏輯順序組織在一起惫撰,數(shù)據(jù)與函數(shù)分開考慮亮垫。
面向?qū)ο螅簩?shù)據(jù)與函數(shù)綁定到一起模软,進(jìn)行封裝,這樣能夠更快速的開發(fā)程序饮潦,減少了重復(fù)代碼的重寫過程燃异。
面向?qū)ο?object-oriented?;簡稱:?OO)至今還沒有統(tǒng)一的概念?我這里把它定義為:按人們?認(rèn)識客觀世界的系統(tǒng)思維方式,采用基于對象(實體)的概念建立模型,模擬客觀世界分析、設(shè)?計继蜡、實現(xiàn)軟件的辦法回俐。
面向?qū)ο缶幊?Object?Oriented?Programming-OOP)是一種解決軟件復(fù)用的設(shè)計和編程方法。?這種方法把軟件系統(tǒng)中相近相似的操作邏輯和操作?應(yīng)用數(shù)據(jù)稀并、狀態(tài),以類的型式描述出來,以對象實例的形式在軟件系統(tǒng)中復(fù)用,以達(dá)到提高軟件開發(fā)效率的作用仅颇。
面向?qū)ο蟮娜筇卣鳎悍庋b、繼承碘举、多態(tài)
封裝
封裝是面向?qū)ο蟮奶卣髦涣榱菍ο蠛皖惛拍畹闹饕匦浴?/p>
封裝,也就是把客觀事物封裝成抽象的類殴俱,并且類可以把自己的數(shù)據(jù)和方法只讓可信的類或者對象操作政冻,對不可信的進(jìn)行信息隱藏。
繼承
面向?qū)ο缶幊?OOP)語言的一個主要功能就是“繼承”线欲。繼承是指這樣一種能力:它可以使用現(xiàn)有類的所有功能明场,并在無需重新編寫原來的類的情況下對這些功能進(jìn)行擴(kuò)展。
通過繼承創(chuàng)建的新類稱為“子類”或“派生類”李丰。
被繼承的類稱為“基類”苦锨、“父類”或“超類”。
繼承的過程趴泌,就是從一般到特殊的過程舟舒。
要實現(xiàn)繼承,可以通過“繼承”(Inheritance)和“組合”(Composition)來實現(xiàn)嗜憔。
在某些OOP語言中桅打,一個子類可以繼承多個基類怜奖。但是一般情況下股冗,一個子類只能有一個基類,要實現(xiàn)多重繼承皆尔,可以通過多級繼承來實現(xiàn)。
多態(tài)
多態(tài)性(polymorphisn)是允許你將父對象設(shè)置成為和一個或更多的他的子對象相等的技術(shù)币励,賦值之后慷蠕,父對象就可以根據(jù)當(dāng)前賦值給它的子對象的特性以不同的方式運作。簡單的說食呻,就是一句話:允許將子類類型的指針賦值給父類類型的指針流炕。
實現(xiàn)多態(tài),有二種方式仅胞,覆蓋浪感,重載。
覆蓋饼问,是指子類重新定義父類的虛函數(shù)的做法。
重載揭斧,是指允許存在多個同名函數(shù)莱革,而這些函數(shù)的參數(shù)表不同(或許參數(shù)個數(shù)不同,或許參數(shù)類型不同讹开,或許兩者都不同)盅视。
1、實現(xiàn)對類的定義
定義一個類Car旦万,并創(chuàng)建兩個對象BMW和benz闹击。
如果我們創(chuàng)建多個對象時,都向上圖一樣一次次為屬性賦值比較麻煩成艘,下面調(diào)用方法縮減工作量赏半。
觀察如下代碼:
使用__init__()方法可以在創(chuàng)建對象時為對象的屬性賦值。
def?__init__(self,參數(shù),...):
賦值
__init__()方法在創(chuàng)建一個對象時默認(rèn)被調(diào)用淆两,不需要手動調(diào)用断箫。
Self參數(shù)不需要開發(fā)者傳遞,python解釋器會自動把當(dāng)前的對象引用傳遞進(jìn)去秋冰。
BMW1也指向BMW所指向的地址仲义。所以,給BMW1.name賦值以后剑勾,該地址內(nèi)所存儲的信息發(fā)生了變化埃撵,輸出也就跟著變了。
使用id()查看內(nèi)存地址
在對象轉(zhuǎn)成字符串的時候調(diào)用__str__(self):這個方法虽另,并將此方法的返回值返回暂刘,所以該方法必須有返回值return,并且返回的是一個字符串捂刺。
在python中如果方法名是__xxxx__()鸳惯,那么就有特殊的功能商蕴,因此叫做“魔法”方法。當(dāng)使用print輸出對象的時候芝发,只要自己定義了__str__(self)方法绪商,那么就會打印從在這個方法中return的數(shù)據(jù)(如上圖結(jié)果)。
可以把self當(dāng)做C++中類里面的this指針一樣理解辅鲸,就是對象自身的意思格郁。某個對象調(diào)用其方法時,python解釋器會把這個對象作為第一個參數(shù)傳遞給self独悴,所以開發(fā)者只需要傳遞后面的參數(shù)即可例书。