1. OOP原理介紹

今天你會發現一個新的有趣的世界。面向對象編程( OOP )的世界。您之前了解了類和對象。今天,您將了解更多有關它們的信息。

OOP 的出現是為了應對日益複雜的程序。當程序中的變量和方法開始達到數以萬計時,顯然必須採取一些措施。一種解決方案是將數據和關聯方法組合到單獨的對像中。

現在程序員不得不分別描述對像如何在外部交互以及它們在內部如何表現。這使得理解和編寫程序變得更加容易。然而,仍然存在一個問題:哪些方法應該是一個對象的內部方法,哪些方法應該可供其他對象使用?

嘗試了很多方法。基於發現的最佳實踐,出現了OOP的 4 條原則。它們是抽象、封裝、繼承和多態。以前只有三個,但專家們後來決定也添加抽象。


2. 抽象

Internet 上的人們仍然在爭論OOP中抽象的定義。問題不在於每個人都錯了。這是每個人都對的。程序越小,與 Java 語言相關的抽象就越多。程序越大,與建模/簡化現實世界對象相關的抽象就越多。

但最聰明的人似乎同意:

抽像是僅使用對象的那些特徵,這些特徵在程序中足夠準確地表示它。主要思想是用最小的字段和方法集表示對象,同時允許您以足夠的準確性解決您的任務

在Java中,抽像是通過抽像類和接口來完成的。

現實生活中的抽象

現實生活中抽象的一個很好的例子是公司或組織的職位描述。職位的名稱是一回事,但分配給職位的具體職責是完全不同的事情。

想像一下,您正在設計未來公司的組織結構。您可以劃分秘書職責,將它們分散在幾個不同的職位上。您可以將 CEO 職位拆分為幾個獨立的職位:CFO、CTO、CMO、HR Director。或者,例如,您可以將辦公室經理和招聘人員的職位合二為一。

你想出職位名稱,然後分擔這些職位的職責。抽象就是從對象整體中脫離出來,選擇我們需要的本質屬性和組成部分。

介紹 OOP 的原理。 抽象

從編程的角度來看,抽像是將程序正確劃分為對象。通常,有許多方法可以將任何大型程序表示為交互對象。抽象使您可以選擇基本特徵並忽略非基本特徵。


3.封裝

封裝的目標是通過使對象更簡單來改進交互。

簡化事情的最好方法是隱藏任何復雜的東西以防窺探。例如,如果您進入波音大型噴氣式飛機的駕駛艙,您不會立即了解如何操作它:

但對於飛機上的乘客來說,一切就簡單多了:買票上飛機,飛機起飛,然後降落。只需“買票”和“上飛機”,您就可以輕鬆地從一個大陸飛到另一個大陸。為飛行、起飛、著陸和各種緊急情況準備飛機的所有復雜性對您都是隱藏的。更不用說衛星導航、自動駕駛儀和空中交通管制中心了。這簡化了我們的生活。

從編程的角度來看,封裝就是“隱藏實現”。我喜歡這個定義。我們的類可以包含數百個方法並在各種情況下實現非常複雜的行為。但是我們可以隱藏它的所有方法以防窺探(通過用 private 修飾符標記它們),只留下兩三個方法與其他類交互(通過用 public 修飾符標記它們)。然後我們程序的所有其他類將只看到三個公共方法並調用它們而不是其他。所有的複雜性都將隱藏在類中,就像駕駛艙對快樂的乘客是隱藏的一樣。


4.繼承

繼承有兩個方面。編程中的繼承和現實生活中的繼承。在編程中,繼承是兩個類之間的一種特殊關係。但現實生活中的繼承要有趣得多。

如果我們需要在現實生活中創造一些東西,我們有兩種選擇:

  1. 從頭開始創建我們需要的東西,花費大量的時間和精力。
  2. 根據已經存在的東西創建我們需要的東西。

最優策略是這樣的:拿一個現有的好的解決方案,稍微修改一下,調整它以適應我們的需要,然後使用它。

如果我們追溯人類歷史的起源,我們會發現自地球上出現生命以來已經過去了數十億年。但如果我們認為人類的起點是我們的靈長類祖先(即人類是“基於”靈長類祖先),那麼僅僅過去了兩百萬年。從頭開始構建需要更長的時間。更久,更長。

在編程中,您可以通過基於另一個類創建一個類來做類似的事情。新類派生自(繼承)現有類。當現有的類具有我們需要的 80-90% 的數據和方法時,這是非常有益的。我們只需將適當的類聲明為我們新類的父類,父類的所有數據和方法就會自動出現在新類中。方便吧?


5.多態性

多態性是一個編程概念。它描述了一種情況,其中不同的實現隱藏在單個接口後面。看看現實生活中的對應物,我們發現駕駛車輛是一個不錯的選擇。

如果有人可以開卡車,那麼她也可以放在救護車或跑車的方向盤後面。一個人可以操作汽車,不管是哪種汽車,因為所有的汽車都有相同的控制界面:方向盤、踏板和換檔桿。汽車的內部結構不同,但它們都有相同的控制界面。

回到編程的世界,多態性允許以相同的方式訪問不同類(通常具有共同的祖先)的對象,這個屬性的價值怎麼強調都不過分。它的價值隨著程序的增長而增加。

OOP意味著原則。內部規律。它們中的每一個都在某種程度上限制了我們,但當程序變大時,它們會提供巨大的回報。OOP的四大原則就像一張桌子的四條腿。拿走一個,整個系統就會變得不穩定。