<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/what-is-polymorphism-in-java/](https://howtodoinjava.com/oops/what-is-polymorphism-in-java/) 簡而言之,多態是一種能力,通過這種能力,我們**可以創建在不同程序環境下表現不同的函數或參考變量**。 **多態**與繼承,抽象和封裝一樣,是面向對象編程的主要組成部分之一。 “子類型多態在面向對象編程的上下文中通常簡稱為多態,是一種創建具有多種形式的變量,函數或對象的能力。” – [維基百科](https://en.wikipedia.org/wiki/Polymorphism_in_object-oriented_programming) > 推薦讀物: [Java 抽象與封裝](//howtodoinjava.com/object-oriented/encapsulation-in-java-and-its-relation-with-abstraction/ "Encapsulation in java and its relation with abstraction")。 ## Java 中的多態 多態的一個例子是使用超類的引用變量引用子類的實例。 例如 ```java Object o = new Object(); //o can hold the reference of any subtype Object o = new String(); Object o = new Integer(); ``` 在此,`String`是`Object`類別的子類別。 這是多態的基本*示例。* 在 Java 語言中,多態本質上被認為是兩個版本。 1. 編譯時多態(靜態綁定或方法重載) 2. 運行時多態(動態綁定或方法覆蓋) ## 編譯時多態(靜態綁定或方法重載) 由于含義是隱式的,因此它用于編寫程序,以使**控制流由編譯時間**本身決定。 使用方法重載實現。 在方法重載中,一個對象可以具有兩個或更多個具有相同名稱的方法,而它們的方法參數不同。 這些參數可能在兩個基礎上有所不同: #### 參數類型 方法參數的類型可以不同。 例如`java.util.Math.max()`函數具有以下版本: ```java public static double Math.max(double a, double b){..} public static float Math.max(float a, float b){..} public static int Math.max(int a, int b){..} public static long Math.max(long a, long b){..} ``` 實際調用的方法是根據傳遞給程序中函數的參數在編譯時決定的。 #### 參數計數 接受不同數量參數的函數。 例如在員工管理應用程序中,工廠可以采用以下方法: ```java EmployeeFactory.create(String firstName, String lastName){...} EmployeeFactory.create(Integer id, String firstName, String lastName){...} ``` 兩種方法都具有相同的名稱`create`,但是實際調用的方法將基于程序中傳遞的參數。 ## 運行時多態(動態綁定或方法覆蓋) **運行時多態基本上被稱為*方法覆蓋*。** 方法覆蓋是在程序中實現繼承時獲得的特性。 一個簡單的例子可以來自現實世界,例如動物。 應用程序可以具有`Animal`類,以及其專門的子類,例如`Cat`和`Dog`。 這些子類將覆蓋`Animal`類提供的默認行為及其某些特定行為。 ```java public class Animal { public void makeNoise() { System.out.println("Some sound"); } } class Dog extends Animal{ public void makeNoise() { System.out.println("Bark"); } } class Cat extends Animal{ public void makeNoise() { System.out.println("Meawoo"); } } ``` 現在將調用哪個`makeNoise()`方法,具體取決于在運行時創建的實際實例的類型,例如 ```java public class Demo { public static void main(String[] args) { Animal a1 = new Cat(); a1.makeNoise(); //Prints Meowoo Animal a2 = new Dog(); a2.makeNoise(); //Prints Bark } } ``` 在這里,重要的是要了解這些劃分是特定于 java 的。 在軟件工程的上下文中,還有其他形式的多態性也適用于不同的語言,但是對于 Java,主要考慮這些形式。 ## 重要事項 1. 多態是創建具有多種形式的變量,函數或對象的能力。 2. 在 Java 中,多態分為兩部分:方法重載和方法重載。 3. 有人可能會說方法重載不是多態。 那么,編譯時“多態”一詞是什么意思呢? 4. 還有另一個術語運算符重載,例如`+`運算符可用于添加兩個整數以及連接兩個子字符串。 好吧,這是 Java 中對運算符重載的唯一可用支持,并且您不能在 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>

                              哎呀哎呀视频在线观看