抽象與封裝:抽象與封裝之間的區別

已發表: 2021-02-09

目錄

介紹

每個程序員都熱衷於開發整潔乾淨的代碼,他必須使用來自盔甲或 OOP 概念的適當武器。 使用適當的 OOP 概念將降低複雜性,並且對象的實體與代碼的其他部分分離。 此外,它提高了可讀性,並且可以在需要時輕鬆修改。

此外,像繼承這樣的 OOP 概念提供了代碼的可擴展性。 這些概念有助於定義抽像類、更新以前實現的代碼、實現現實生活場景的應用程序。

抽象、封裝是面向對象編程的基本概念。 每個程序員都實現了這些概念,以獲得乾淨且可重用的代碼。 但這兩個概念之間存在相當多的差異,讓我們在本文中了解它們。

首先,讓我們快速瀏覽一下抽象和封裝的概念。

抽象

抽像是隱藏不必要數據並僅顯示相關數據的過程。 在數據的海洋中,我們只是保持一些數據對用戶的透明性。 面向對象編程中的這一重要概念將降低代碼的複雜性並增加可讀性。

例如,假設我們被分配了創建在線課程註冊門戶的任務,我們可用的數據字段是{姓名、年齡、當前職業、大學名稱、課程名稱、付款方式、兄弟姐妹的姓名、婚姻狀況、車輛數字}。

在查看了可用的數據字段後,我們會了解到某些字段對於課程註冊門戶來說不是必需的,例如 {兄弟姐妹的姓名、婚姻狀況、車輛編號}等字段對於課程註冊來說不是必需的。

因此,我們需要具體並僅選擇相關數據。 現在必要的字段是{姓名、年齡、當前職業、大學名稱、課程名稱、付款方式},這是 OOP 中的一個抽象示例,因為我們已經從整個數據中保護了選定的信息。

現在,這些新數據還可以用於其他一些應用程序,例如課程狀態跟踪器、課程完成記錄等。我們可以使用相同的數據而無需任何更改。

許多人經常對抽象和抽像類感到困惑,那麼它們是否相關?

抽像類與抽像不同,創建抽像類/方法的目的是在子類或子類中實現它們。 而抽像只是隱藏數據,並通過使用訪問說明符(如 public、protected、private)僅顯示相關數據。

封裝

封裝是將數據成員與成員變量綁定。 這將避免直接訪問變量,因為直接訪問變量可能會侵犯隱私,並且無法隱藏實現。

我們可能已經經歷過一些類中的經典方法,例如 set 和 get,其中 set 方法用於更新或分配變量的值,而 get 方法用於讀取或檢索變量的值。 在這裡,我們可以使用該類的對象直接訪問變量,但是如果我們想將變量設為私有,那麼我們應該使用這些設置和獲取方法。

這個概念很簡單,我們將 set 和 get 方法公開,變量是私有的。 所以變量只能通過類外的公共方法訪問,因為私有對像不能在類外訪問,但在類內可以訪問。 這種將變量與方法綁定或捆綁的概念稱為封裝。

讓我們看一個簡單的 java 程序來更好地理解這一點。

課程註冊{
私人字符串學生姓名;
私人字符串課程名稱;
公共字符串getName (){
返回學生姓名;
}
public void setName (字符串名稱){
這個.student_name=name;
}
公共字符串getCourse (){
返回課程名稱;
}
public void setCourse (字符串課程){
這個.course_name=課程;
}
}
公共u pGrad {
公共靜態無效主要(字符串[]參數){
課程註冊 c=課程註冊();
c.setName( “mithun” );
c.setCourse( “數據科學” );
System.out.println(c.getName());
System.out.println(c.getCourse());
}
}

在上面的代碼中,我們創建了一個類 CourseRegistration,其中成員變量 student name 和 course name 是私有的,但是我們在另一個類中使用 set name 和 get name 函數訪問它。 在主類中,我們創建了 CourseRegistration 類型的對象。 我們正在使用 set 和 get 函數初始化和訪問成員變量。

現在我們已經了解了抽象的定義和示例,讓我們討論抽象和封裝之間的優點和區別。

抽象的優點

  • 由於只有相關數據對用戶可見,因此維護了數據的隱私。
  • 降低代碼的複雜性並提高可讀性。
  • 實現抽象的類可以通過繼承它們作為父類,從而提高可重用性,減少重複。

封裝的優點

  • 它有助於將數據成員與成員函數綁定。
  • 提高了錯誤分析的效率和用戶友好性。
  • 為程序員控制數據的可訪問性和透明度提供了靈活性。

抽象與封裝之間的區別

定義

  • 抽象隱藏了代碼的細節和實現。
  • 封裝是隱藏數據並控制代碼的可見性。

階段

  • 抽像是一個設計級別的過程。
  • 封裝是一個實現級別的過程。

關鍵能力

  • 抽象關心的是類實例可以做什麼,而不是類的實現。
  • 封裝有助於數據綁定和控制保持數據的透明度。

用例

  • 抽像是一個設計級別的過程,用於降低項目設計階段的複雜性。
  • 封裝是一個實施級別的過程,它用於在項目實施階段提供隱私並保持對數據透明度的控制。

如何實施

  • 抽象可以使用java中的類和接口來實現。
  • 封裝也使用類實現,並且通過指定訪問說明符(如受保護的、公共的、私有的)來獲得對數據隱私的控制。

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

結論

我們已經了解了 OOP 概念的重要性,理解了抽象和封裝的定義。 瀏覽了抽象和封裝的示例。 我們還了解了使用 OOP 概念(如抽象和封裝)的優勢。 最後,我們已經了解了抽象和封裝之間的區別。

現在您已經了解了抽象、封裝的定義和實現,請嘗試在您的代碼中實現它們,並嘗試降低您從現在開始編寫的代碼的複雜性!

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

什麼是面向對象編程中的抽象?

面向對象編程中的抽像是一種通過構建對象來表示有關問題的高級信息的技術。 抽像是在接口的幫助下實現的,接口的實現是使用實際代碼完成的。 抽像是通過為消費模塊提供不同的接口來實現的,具體細節對消費模塊隱藏。 實現抽像是為了隱藏底層細節的實現細節。 它還用於隱藏複雜的細節並為用戶提供更簡單的界面。

類和對像在編程中是如何工作的?

類和對像是所有面向對象編程語言中使用的兩個主要概念。 每個類都包含一組可以使用和操作的變量和方法。 在面向對象的編程語言中,程序中的所有對像都有特定的類型,對象的變量和方法只能由相同類型的方法操作。 在大多數面向對象的語言中,類用於創建對象,反之亦然。 面向對象的程序由對象、過程和數據類型組成。 面向對象程序中的所有內容,包括數據和代碼,都是對象。

封裝和抽像有什麼區別?

抽像是一種去除代碼中不必要的細節並專注於相關部分的方法。 例如,我們可以編寫一個“乘法”函數並用它來將任意數與任意數相乘,而不是編寫一個將兩個數相乘的函數。 抽像是表示某些特定數據的一種方式。 封裝是一種隱藏事物複雜性並僅公開您希望公開的部分的方法。 例如,如果您有一個類具有一個或多個用於存儲數據的私有字段,那麼您就處於封裝狀態。 該類包含數據並具有公開公共數據的方法。