<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Java 中的抽象示例 > 原文: [https://howtodoinjava.com/oops/understanding-abstraction-in-java/](https://howtodoinjava.com/oops/understanding-abstraction-in-java/) 用最簡單的話來說,您可以將抽象定義為僅捕獲與當前視角相關的 Java 對象的那些細節。 例如,`HashMap`存儲鍵值對。 它為您提供了兩種方法`get()`和`put()`方法,用于從映射存儲和檢索鍵值對。 實際上,這是您想要在應用程序中使用映射時所需的唯一信息。 它是如何工作的,不需要使用它就知道。 這是 Java 中非常抽象的示例。 再看一個**現實生活中的抽象示例**,它可以是電視遙控器。 您知道,當您按遙控器上的任何按鈕時,電視上都會應用某些功能,例如更改頻道,更改音量級別等。不需要了解遠程內部的工作原理,即可正確使用它。 這是一個抽象的例子。 ```java Table of Contents 1\. What is abstraction in oops? 2\. Types of abstraction 3\. How to use abstraction in java 4\. Encapsulation vs Abstraction ``` ## 1\. OOP 中的抽象是什么? 在[面向對象程序設計](//howtodoinjava.com/object-oriented/object-oriented-principles/)理論中,抽象涉及**定義對象的能力**,該對象代表可以執行工作,報告和更改其狀態以及與系統中其他對象“通信”的抽象“角色”。 > 在計算機科學中,抽象是這樣的過程,在該過程中,數據和程序以與其含義(語義學)形式相似的表示形式進行定義,同時隱藏了實現細節。 – [WikiPedia](https://en.wikipedia.org/wiki/Abstraction_%28computer_science%29 "Abstraction") 任何編程語言中的抽象都可以通過多種方式工作。 從創建子例程到定義用于進行低級語言調用的接口可以看出。 一些抽象試圖通過完全隱藏它們依次建立在其上的抽象來限制程序員所需概念的廣度,也就是[設計模式](//howtodoinjava.com/gang-of-four-java-design-patterns/)。 ## 2\. 抽象類型 通常,可以通過兩種方式查看抽象: 1. #### 數據抽象 數據抽象是創建復雜數據類型并僅公開有意義的操作以與數據類型進行交互的方式,而將所有實現細節都隱藏在外部工作中。 這種方法的好處在于可以隨著時間的流逝改善實現的能力,例如解決性能問題無所不包。 想法是這樣的更改不應該對客戶端代碼產生任何影響,因為它們在抽象行為上沒有任何區別。 2. #### 控制抽象 軟件本質上是用任何編程語言編寫的眾多語句的集合。 在大多數情況下,語句是相似的,并且多次重復出現。 控制抽象是識別所有此類語句并將其作為工作單元公開的過程。 我們通常在創建函數來執行任何工作時使用此特性。 ## 3\. 如何用 Java 實現抽象? 由于抽象是面向對象編程實踐的核心原則之一,而 Java 遵循所有 OOP 原則,因此抽象是 Java 語言的主要構建模塊之一。 **在 Java 中,抽象是通過接口和抽象類實現的**。接口允許您完全抽象化實現,而抽象類也允許部分抽象。 ***數據抽象***從創建簡單數據對象到復雜的集合實現,例如[`HashMap`](//howtodoinjava.com/java/collections/how-hashmap-works-in-java/)或`HashSet`。 同樣,從定義簡單的函數調用到完整的開源框架,可以看出***控制抽象***。 控制抽象是[結構化編程](https://en.wikipedia.org/wiki/Structured_programming "Structured programming")背后的主要力量。 #### 3.1 Java 抽象示例 我們再來看一個 Java **使用接口**進行抽象的示例。 在此示例中,我將創建各種報告,這些報告可以在應用程序生存期內隨時按需運行。 作為報告的使用者,類不必知道報告的內部`run()`,只需要執行此方法即可執行報告。 ```java import java.util.List; public interface Report { List<Object> run(ReportContext reportContext); } ``` ```java public class ReportContext { //fields } ``` ```java import java.util.List; public class EmployeeReport implements Report { @Override public List<Object> run(ReportContext reportContext) { //Custom Logic System.out.println("Executing employee report"); return null; } } ``` ```java import java.util.List; public class SalaryReport implements Report { @Override public List<Object> run(ReportContext reportContext) { //Custom logic System.out.println("Executing salary report"); return null; } } ``` 現在使用`run()`方法執行報告。 ```java package com.howtodoinjava.abstraction; public class Main { public static void main(String[] args) { ReportContext reportContext = new ReportContext(); //Populate context Report eReport = new EmployeeReport(); eReport.run(reportContext); Report sReport = new EmployeeReport(); sReport.run(reportContext); } } ``` 程序輸出。 ```java Executing employee report Executing employee report ``` ## 4\. 封裝與抽象 > `Encapsulation`是您所需的`abstraction`的實現。 抽象更多地是關于隱藏實現細節。 在 Java 中,抽象是通過抽象類和接口實現的。 封裝是將實現(代碼)及其操作的數據(變量)包裝在同一類中。 Java 類是封裝類的一個示例,其中所有實例變量都是私有的,并且只有該類中的方法才能操縱這些變量。 如果您想了解有關 Java 中抽象類和接口的更多信息,請閱讀我的下一篇文章[探索 Java](//howtodoinjava.com/object-oriented/exploring-interfaces-and-abstract-classes-in-java/ "Exploring interfaces and abstract classes in java") 中的接口和抽象類。 學習愉快!
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看