每個程序員都應該知道的 OOP 概念和示例

已發表: 2021-02-26

在本文中,我們將介紹面向對象編程的基本概念,並討論常用術語:抽象、封裝、繼承和多態。

首先,OOP 是一種編程方法,它要求程序員創建對象並在整個程序中在需要此類對象進行操作的函數內使用它們。 OOPs 概念在 java 中廣泛使用的原因是它允許代碼的可重用性,同時保持安全性。

在討論面向對象編程的四大支柱之前,讓我們先熟悉一下我們在使用任何面向對象語言時經常聽到的通用術語:Java、python、c++。

目錄

班級

類是對象的集合,它定義了一組特定類型的所有對象共有的屬性。 它也可以稱為創建對象的藍圖。 一個類需要以下組件:

類名:給以大寫字母開頭的類的名稱。

修飾符:基於類修飾符的功能可以是公共的、私有的或默認的。

Body 類體包含類中存在的對象的所有代碼。 這可能包括聲明任何變量或創建任何包含對像功能的構造函數或方法。

目的

一個對像被定義為一個類的實例並包含現實生活中的實體。 例如,對於一個名為 Animals 的類,它的對象將是貓、狗、大像等。 每個對像都有自己的身份、屬性和行為。 下面的代碼描述了在 Java 語言中編程時類、對象和方法的使用。

方法

方法在類中定義,用於執行特定功能。 該方法可能包含也可能不包含輸入參數。 下面的代碼描述了在 Java 語言中編程時類、對象和方法的使用。

在上面的代碼中,Player 是我們類的名稱,而 runs 是傳遞給 Batsman 方法的參數,當通過名為 myobj 的對象調用時,該參數返回他的得分。

訪問修飾符

Java 中的訪問修飾符定義方法或構造函數或類的可訪問性或範圍。 四種類型的訪問修飾符是:

  1. Public 在一個類中編寫的代碼可供其他類訪問。
  2. Private 編寫的代碼只能在該特定類中訪問。
  3. 默認值編寫代碼可在同一個包中訪問。
  4. 受保護代碼可在包內訪問,也可通過子類訪問。 在沒有子類的情況下,無法訪問代碼。

現在讓我們繼續討論面向對象編程的癥結所在。

遺產

術語繼承是指將一個類的屬性繼承到另一個類。 屬性是指父類的屬性和方法。 父類是其屬性需要被其他類繼承的類。 繼承父類屬性的類稱為子類或子類。 為了將父類的屬性繼承到子類中,使用了一個叫做extends的關鍵字

在上面的示例中,Sponsor 是父類,所有者是它的屬性。 我們創建了一個名為 Team 的子類,它繼承了父類 Sponsor。 我們創建了一個可以訪問父類屬性的 Team 對象。 上述代碼的輸出是:

多態性

顧名思義,多態是變量或函數以多種形式存在的能力。 多態性允許程序員使用相同的變量或函數來執行不同的任務。 現實生活中的多態性示例將考慮一個開放的地面,現在該地面可用於​​進行運動。

此外,它還可用於舉辦婚禮和音樂會。 最後,同一塊地面可用於​​停放車輛。 由此,我們可以推斷出單個變量可以根據其用途有多種實現。

多態性我們通常會遇到兩個術語,即方法重載方法覆蓋

方法重載中,可以以多種方式使用單個方法並執行不同的功能。 這些方法將具有相同的名稱,但可以使用不同的參數作為輸入。

Method Overriding中,父類的方法可以被子類覆蓋。 有了這個,相同的方法在被父類和子類調用時可以執行不同的操作。

多態性的一個例子如下所示:

在此示例中,使用相同的方法我們可以執行多個任務。 同樣的方法 Voice 在 Bird 中使用時會輸出“Turr Turr”,在 Duck 中使用時會輸出“Quack Quack”。 輸出的快照如下所示 -

抽象

抽像是向用戶隱藏某些數據並僅向他們顯示所需信息的過程。 例如,在駕駛汽車時,我們並不關心內部功能或機制。 向我們展示的是汽車的行駛速度和可用的汽油升數。 所有其他邊緣化數據都不會顯示給駕駛員。

abstract 關鍵字用於執行抽象時的方法和類。 對於抽像類,我們不能創建對象,而抽象方法不應該包含主體。 如果違反了這兩個規則中的任何一個,則輸出將生成錯誤。

在這裡,我們創建了一個繼承自主類 Bird 的子類 Duck 的對象。 輸出如下所示:

封裝

封裝是將代碼和數據綁定到一個單元中的過程。 在這裡,一個類的變量對其他類是隱藏的(通過使用關鍵字private ),但只能通過成員函數訪問。 Setter 和 getter 函數用於訪問抽像類的私有變量。

到目前為止,我們已經涵蓋了與使用 Java 進行面向對象編程相關的所有內容。 在結束之前,讓我們看一下 OOP 概念的一些優點。

  1. 代碼可以很容易地被重用,因此為代碼的開發節省了大量的時間和成本。
  2. 它有助於以結構良好的方式設計代碼,因此任何新程序員都不必花費很長時間來理解代碼。
  3. 除了幫助用戶有效地編寫代碼外,它還確保安全性不受影響。

結帳: OOP 面試問題和答案

從世界頂級大學在線學習軟件課程獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。

結論

總而言之,在本博客中,我們介紹了 OOP 的基本概念。 這些概念廣泛用於工業和其他應用。 為了成為一名熟練的程序員,應該對這些概念有紮實的掌握。 在即將發布的博客中,我們將揭示其他幾個基本的編程概念,這些概念將幫助您發展該領域的專業知識。

如果您有興趣了解有關全棧軟件開發的更多信息,請查看 upGrad 和 IIIT-B 的全棧軟件開發執行 PG 計劃,該計劃專為工作專業人士設計,提供 500 多個小時的嚴格培訓、9 個以上的項目和任務、IIIT-B 校友身份、實用的實踐頂點項目和頂級公司的工作協助。]

什麼是階乘?

階乘是一種數學運算,它計算給定數字及其以下所有數字的乘積。 階乘是表示一個數字乘以多少次的乘積。 比如5的階乘是5x4x3x2x1,等於120,1的階乘是1,0的階乘也是1那應該在你的手上。

如何編寫階乘遞歸程序?

數 n 的階乘定義為 n! = 1 × 2 × 3 × 4 × … × n。 5 的階乘是 120。階乘函數定義為 factorial(5) = 120。遞歸函數是調用自身的函數。 這是遞歸樣式 factorial(n) = n * factorial(n - 1) 中的階乘函數示例。 編寫階乘遞歸程序非常簡單,代碼與迭代版本非常相似。 為了編寫迭代版本,我們使用一個名為 n 的變量並將其加一,然後將其與名為 prod 的變量相乘,該變量跟踪 n 的連續值。 輸出值也存儲在名為 prod 的變量中。 在遞歸版本中,您仍然使用一個名為 n 的變量。 但是,您不需要變量來存儲 prod 的值,您可以直接從函數中返回 prod。

什麼是編程中的遞歸?

遞歸這個詞來源於拉丁詞recurrere,意思是返回。 在大多數編程語言中,調用自身的函數稱為遞歸。 這個循環過程一直持續到達到基本情況,這在任何遞歸函數中都沒有定義。 遞歸是一種以結構化和有組織的方式解決問題的有效技術。 這是一個很好的編程策略。 例如,斐波那契數列問題、階乘問題等可以通過迭代和遞歸的方式解決。