1. 程式人生 > >Java :面向對象

Java :面向對象

圖像 擴展 實體 最終 .com 要求 問題 封裝 格式

Java :面向對象

直面Java 第001期

什麽是面向過程

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

什麽是面向對象

面向對象是對象為中心,對每一個步驟抽象形成對象,在對象中封裝好需要解決問題的方法,強調了代碼的復用。

兩者的區分

比如說現在要實現一個開車的功能。

對於面向過程來說,實現駕駛員開車,需要定義一系列的流程,比如說掛擋 -> 踩離合 -> 踩油門等等,此外如果現在有一個其他的車,就需要重新定義一下流程。

對於面向對象來說,實現這個功能,可以先定義一個基本的車類型,封裝一些共有的屬性和方法,然後定義一個特定的車類型,在其中定義駕駛這個車需要的方法,以後要用的時候直接調用這個對象的方法就可以了,如果有其他的車需要駕駛,也可以通過繼承來公用一些都有的屬性方法,增加了代碼的復用性。

三大基本特征

封裝

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

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

對於方法,比如說車中會有前進、後退、轉彎等方法,一般是用來定義這個對象的一些操作行為,提供給外界使用。

繼承

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

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

多態

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

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

五大基本原則

單一職責原則

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

比如說求一個圖形的面積並返回給用戶,這個方法需要定義如何求面積和如何返回的話,就違反了「單一職責原則」,日後如果返回格式變了,就需要重新定義方法,就違背了原則.因此我們只需要定義求面積,具體如何返回,交給其他的方法來操作.

開放封閉原則

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

對於求一個圖形的面積,如果我們已經定義好了,此時需要求其他的圖形,不能在原先定義的方法裏面修改,應該拓展一個其他方法來求解.

裏式代換原則

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

子類應當可以替換父類並出現在父類能夠出現的任何地方.因為父類擁有的東西子類都有,因此可以替換。

接口隔離原則

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

對於一個立體圖形來說,擁有求體積的的功能,現在有一個平面圖像,就不能實現這個接口,因為平面圖形不求體積。

依賴反轉原則

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

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

參考資料:

  1. http://blog.jobbole.com/86267/
  2. Hollis知識星球

Java :面向對象