Java :面向對象

Java :面向對象

直面Java 第001期java

什麼是面向過程

面向過程是以函數爲中心,要解決一個問題,須要把問題分解爲一個個的步驟,而後定義一系列的流程,用特定的輸入通過函數的處理,最終輸出特定的結果。函數

什麼是面向對象

面向對象是對象爲中心,對每個步驟抽象造成對象,在對象中封裝好須要解決問題的方法,強調了代碼的複用。code

二者的區分

好比說如今要實現一個開車的功能。對象

對於面向過程來講,實現駕駛員開車,須要定義一系列的流程,好比說掛擋 -> 踩離合 -> 踩油門等等,此外若是如今有一個其餘的車,就須要從新定義一下流程。blog

對於面向對象來講,實現這個功能,能夠先定義一個基本的車類型,封裝一些共有的屬性和方法,而後定義一個特定的車類型,在其中定義駕駛這個車須要的方法,之後要用的時候直接調用這個對象的方法就能夠了,若是有其餘的車須要駕駛,也能夠經過繼承來公用一些都有的屬性方法,增長了代碼的複用性。繼承

三大基本特徵

封裝

就是把一個對象所擁有的屬性和方法融合進一個結構中,對外只顯示定義者想給外界看的東西。接口

對於屬性,好比說一個車,可能會有大小,材質,顏色等屬性,通常不直接對外公開,提供一個方法來決定給外界什麼的屬性操做權限。get

對於方法,好比說車中會有前進、後退、轉彎等方法,通常是用來定義這個對象的一些操做行爲,提供給外界使用。class

繼承

經過A類繼承來繼承B類,使得A類來重用一些B類的屬性和方法。擴展

例如一開始定義了一個車子類型,裏面有全部車子都有的顏色,材質等屬性,前進、後退等行爲,如今有一個私家車類型,只要繼承了前面的車類型,就已經擁有了父類所定義的這些,還能夠重載來使得其變得擁有自身的屬性方法。

多態

多態通常經過類繼承和接口實現指向子類來實現,使得經過父類引用來操做子類對象。

# 這樣就能夠用父類的引用來調用子類
Vehicle vehicle = new Vehicle();
vehicle.move();

五大基本原則

單一職責原則

一個類應該有且只有一個去改變它的理由

好比說求一個圖形的面積並返回給用戶,這個方法須要定義如何求面積和如何返回的話,就違反了「單一職責原則」,往後若是返回格式變了,就須要從新定義方法,就違背了原則.所以咱們只須要定義求面積,具體如何返回,交給其餘的方法來操做.

開放封閉原則

對象或實體應該對擴展開放,對修改封閉。

對於求一個圖形的面積,若是咱們已經定義好了,此時須要求其餘的圖形,不能在原先定義的方法裏面修改,應該拓展一個其餘方法來求解.

裏式代換原則

對父類的調用一樣適用於子類

子類應當能夠替換父類並出如今父類可以出現的任何地方.由於父類擁有的東西子類都有,所以能夠替換。

接口隔離原則

不該強迫客戶端實現一個它用不上的接口,或是說客戶端不該該被迫依賴它們不使用的方法

對於一個立體圖形來講,擁有求體積的的功能,如今有一個平面圖像,就不能實現這個接口,由於平面圖形不求體積。

依賴反轉原則

高層次模塊不該依賴於低層次模塊。

應該把低層次模塊中的特定功能抽象成接口,而後實現這個接口,這樣高層模塊就能夠調用接口來實現解耦,往後低層次模塊修改了,高層次模塊不用改變。

參考資料:

  1. http://blog.jobbole.com/86267/
  2. Hollis知識星球
相關文章
相關標籤/搜索