這個是我對面向對象的理解,理解有誤請噴我吧!菜鳥一枚! 用最簡單的方式,去辦最複雜的是,看字面意思理解面向對象,就是先要面向找到需要面向的東西,把所要面向的東西抽象出來,封裝在一個盒子中組成一個對象。而這個東西可以是對象的屬性,對象的行為特征等。所以面向對象在我看來就是將所要表示的具有相同對象的屬性 ...
這個是我對面向對象的理解,理解有誤請噴我吧!菜鳥一枚!
用最簡單的方式,去辦最複雜的是,看字面意思理解面向對象,就是先要面向找到需要面向的東西,把所要面向的東西抽象出來,封裝在一個盒子中組成一個對象。而這個東西可以是對象的屬性,對象的行為特征等。所以面向對象在我看來就是將所要表示的具有相同對象的屬性和行為特征封裝在一個類中組成一個類。而這個類可是在單純一點,比如一個類裡面只封裝對象的屬性,在類多了時組成一個包,這個包專門放屬性類。在回到前面那句話,將具有相同屬性和行為特征的對象封裝在一起。實現了代碼之間的低耦合、高內聚,這樣就產生了封裝,面向對象的特征之一,封裝是提高了代碼之間的可維護性。
封裝起來的代碼看起來就優雅多了,而系統還需要進行升級什麼的呀,在不能滿足需求的時候,就需要在去在原本的類的基礎上去寫新的東西,比如原本人眼睛、鼻子什麼的都有了,可是現在需要有一個衣服等等。這樣就可以將人所封裝的類看成一個基類,在這基礎上去繼承人這個類,實現一個新類就是衣服類。所以這也就是面向對象的另一個特征繼承,繼承實現了代碼之間的可擴展性,有利於系統的擴展。為了系統的可擴展性,又引出了一個新的概念就是多態。
在說多態之前在說一個,就是重寫和重載這兩個我的理解。
重寫,,一般是發生在兩個類之間的,重寫的條件就是要子類去繼承父類,重寫父類中的方法,不包含父類的私有方法,重寫中子類的方位許可權要比父類中的訪問許可權要大,並且重寫中的子類要和父類的名字,參數,返回值相同。不相同的話是直接報錯了,不信去試試。並且重寫的方法的異常要比父類中的異常要小或者相同,重寫是子類對父類的擴展。
而重載呢,是發生在一個類中,定義是一個類中方法名相同,形參列表不同的方法。很好理解,比如人是一類,而人中有一個方法是愛好,具體愛好什麼呢,這個就根據編程人員的定義了,同樣的將愛好這個類中的具體愛好在定義到一個類中,在引用進來都可以。
重載也是一種多態,是發生在一個類中的不同方法,讓一個類中的相同方法所傳遞的不同參數,實現一個類的多態。
在說一下多態吧,子類繼承父類,之類重寫父類中的方法,或者在類中實現自己的方法,達到系統的可擴展性。如果從另一個角度去理解的話,我認為重載是垂直對一個類中的方法實現多態。而重寫是在對類與類之間實現水平擴展,相互之間進行彌補,一起打造了多態的環境。介面也是可以去繼承去實現的,這裡就寫了,網上代碼和資料很多。
寫的不好不要介意,我個人的理解方式,請噴吧!大神可以對我菜鳥進行指導一下。