前面講解了Java對資料的處理和程式編譯相關的基本觀念,現在開始會逐步講解物件導向與撰寫軟體架構的思路,將這些觀念融會貫通後,相當於領悟了通透世界,會更好的駕馭Spring Boot開發後端應用,今天第九天來講解物件導向的三個重要觀念「封裝、繼承、多形」
所謂的物件指的是將沒有實際形體,卻有相似目的的的邏輯聚合實體,從前面的篇章有定義類別作為範例,定義了屬性跟方法並對類別內的屬性進行操作,將滿足邏輯需要的「資料以及特定操作」將其具現化包在一個類別內,換句話說能將物件認為是抽象概念的聚合實體
更白話的解釋是,今天為了完成一個任務,必須思考執行步驟(物件名稱),分析完步驟後,就是尋找合適的材料(物件的屬性),並透過特定方式來操作資料(物件的方法),由於將抽象的任務轉化成「多個步驟、材料、作法」,由於執行步驟負責較單一的業務,使程式邏輯能更專注完成特定任務,也因為這些特性使程式碼更具備複用性和可維護性
封裝
從字面上的意思很像將一項物品裝在容器中,其實際的概念也差不多,所謂的封裝就是透過修飾子決定屬性或方法的可見範圍,外部只可以透過特定作法,來操作被隱藏的屬性或方法,我只要知道現在要做甚麼,不需要了解內部執行細節,由於重要資料被保護,不會受外部干擾影響實際內容,封裝的特性可以在程式執行時,確保資料存取的正確性
繼承
在人類社會存在父子關係,過軟體工程中也有相似的概念,主要用來讓兒子擁有爸爸的「特性」,其實現原理是子類可以透過繼承(extends)關鍵字,複製父類的屬性和方法,讓程式碼可以實現共用,並且子類可以重寫(Override)由父親繼承過來的方法,繼承特性讓程式碼可以被共用同時也保留了一定彈性,只是要注意避免過度濫用,這會導致耦合度太高,使維護更困難
多型
多型是指「不同類別」可以使用相同的方法或介面,能實現程式碼不更動的情況,變換執行邏輯,配合開頭介紹物件導向講的重點,物件的概念類似完成某項任務中的某一步驟,今天有兩項任務有相同的步驟,但因任務特性需要更換做法,此時就會出現步驟(物件)不變但作法(方法實作)異動的情況,這個特性完美落實開放封閉原則,減少程式碼改動的範圍,相對的提升維護成本