天天看點

3 分鐘掌握 Java 程式設計精髓:封裝、繼承、多态

#秋日生活碎片打卡#

3 分鐘掌握 Java 程式設計精髓:封裝、繼承、多态

Hello 大家好!我是你們的技術小夥伴——小米,今天我們來聊一聊 Java 程式設計中非常重要的三大面向對象特性:封裝、繼承和多态!作為一名 Java 開發者,了解這三大特性不僅能夠讓你寫出更加簡潔優雅的代碼,還能幫助你應對複雜的業務場景。是以,如果你對 Java 基礎還在困惑,今天這篇文章就是為你量身定制的哦!

什麼是面向對象?

面向對象程式設計(OOP)是一種程式設計範式,它将程式結構設計成由對象和類組成的子產品化形式。面向對象的三個核心特性——封裝、繼承、多态——就是我們程式設計的核心“武器”。讓我們一步一步來探索這三大特性。

封裝:資料和行為的保護傘

什麼是封裝?

封裝就是将對象的屬性和行為進行隐藏和保護,對外提供有限且受控的通路權限。我們通過将類的屬性私有化,隻暴露出對這些屬性進行操作的方法,來控制外界對這些屬性的通路和修改。這樣做的目的不僅是為了保護資料,還可以讓我們對複雜的資料操作更加簡單和清晰。

舉個例子:

3 分鐘掌握 Java 程式設計精髓:封裝、繼承、多态

在上面的例子中,Person類中的 name 和 age 屬性是私有的,外部類不能直接通路它們。但是我們通過 get 和 set 方法,讓外界能夠有條件地擷取或修改這些屬性值,這樣的設計就是為了防止資料被随意篡改。

為什麼需要封裝?

  • 資料保護:通過私有化屬性,防止外部代碼直接通路和修改對象的内部狀态,進而保證資料的安全性。
  • 簡化程式設計:封裝後,我們可以為資料操作提供更加統一、簡化的接口,外部類隻需要關注如何調用這些方法,而不需要知道其内部的實作細節。
  • 便于維護:封裝為我們提供了一個靈活的結構,哪怕屬性内部的實作發生了變化,隻要接口不變,外部代碼依然能夠正常工作。

封裝的精髓就在于資料的隐藏和對外界的限制,它使得類之間的互動變得更可控、更安全。

繼承:代碼的複用大師

什麼是繼承?

繼承是面向對象程式設計的一個非常強大的特性,它允許一個類基于另一個類的屬性和方法進行擴充。通過繼承,子類可以複用父類的功能,同時還能夠添加新的屬性和方法。Java 中的繼承是單繼承,意味着每個子類隻能有一個直接父類,但可以通過實作多個接口來實作“多重繼承”的效果。

舉個例子:

3 分鐘掌握 Java 程式設計精髓:封裝、繼承、多态

在這個例子中,Dog 類繼承了 Animal 類。Dog 類不僅可以複用 Animal 類中的 eat() 方法,還能添加它自己的 bark() 方法。通過繼承,我們可以提高代碼的複用性,避免寫重複的代碼。

單繼承和多實作

  • 單繼承:在 Java 中,一個類隻能繼承自一個直接父類,這樣設計是為了避免“菱形繼承問題”(當一個類同時繼承兩個父類時,這兩個父類各自擁有相同的方法或屬性,可能導緻沖突)。
  • 多實作:雖然 Java 不支援多繼承,但它支援一個類實作多個接口。通過接口,我們可以靈活定義類的行為,而不會受到繼承結構的限制。

舉個多實作的例子:

3 分鐘掌握 Java 程式設計精髓:封裝、繼承、多态

這裡的 SuperHero 同時實作了 Flyable 和 Swimmable 接口,表現出飛行和遊泳的能力。這樣,繼承父類的單一性不再是限制,我們可以讓類具有多種不同的功能。

多态:同一個接口,不同實作

什麼是多态?

多态的概念非常有趣,通俗來說,多态允許我們使用同一個接口來操作不同的對象,而這些對象會表現出不同的行為。多态有兩種實作方式:通過繼承(子類方法重寫)和通過接口。

舉個通過繼承實作多态的例子:

3 分鐘掌握 Java 程式設計精髓:封裝、繼承、多态

在這個例子中,雖然 myAnimal、myCat 和 myDog 都是 Animal 類型的引用,但實際調用時,它們執行的是各自類中重寫的 makeSound() 方法。這就是多态的展現。

接口實作多态的例子:

3 分鐘掌握 Java 程式設計精髓:封裝、繼承、多态

通過接口實作多态,Circle 和 Square 都實作了 Shape 接口,但它們在調用 draw() 方法時,表現出來的行為是不同的。

為什麼需要多态?

  • 提高代碼的可擴充性:通過使用父類或者接口,我們的代碼可以更加靈活地擴充,隻需要在特定的地方添加新的子類或實作類,而不用改變現有的代碼。
  • 簡化代碼:通過多态,我們可以編寫更加通用的代碼,而無需為每個具體的類型寫出不同的方法。

END

面向對象程式設計的三大特性——封裝、繼承、多态,是我們開發過程中的三大“法寶”。封裝讓我們保護資料并簡化接口,繼承幫助我們提高代碼複用性,多态則讓我們寫出更靈活、擴充性更強的代碼。

大家如果對封裝、繼承、多态還有疑問,歡迎在評論區留言哦,小米會及時為大家解答!讓我們一起快樂學習,寫出優雅的代碼吧!

我是小米,一個喜歡分享技術的29歲程式員。如果你喜歡我的文章,歡迎關注我的微信公衆号“軟體求生”,擷取更多技術幹貨!

繼續閱讀