<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://beginnersbook.com/2013/03/polymorphism-in-java/](https://beginnersbook.com/2013/03/polymorphism-in-java/) 多態是 [OOP](https://beginnersbook.com/2013/04/oops-concepts/) 特征之一,它允許我們以不同的方式執行單個動作。例如,假設我們有一個`Animal`類,它有一個方法`sound()`。由于這是一個泛型類,所以我們不能給它一個實現,如:`Roar`,`Meow`,`Oink`等。我們不得不給出一個通用的消息。 ```java public class Animal{ ... public void sound(){ System.out.println("Animal is making a sound"); } } ``` 現在假設我們動物類的兩個子類:`Horse`和`Cat`擴展(參見[繼承](https://beginnersbook.com/2013/03/inheritance-in-java/))`Animal`類。我們可以提供相同的方法實現,如下所示: ```java public class Horse extends Animal{ ... @Override public void sound(){ System.out.println("Neigh"); } } ``` 和 ```java public class Cat extends Animal{ ... @Override public void sound(){ System.out.println("Meow"); } } ``` 正如您所看到的那樣,盡管我們對所有子類`sound()`都有共同的操作,但是有不同的方法來執行相同的操作。這是多態的完美示例(允許我們以不同方式執行單個操作的功能)。僅調用泛型`sound()`方法沒有任何意義,因為每個`Animal`都有不同的聲音。因此,我們可以說該方法執行的操作基于對象的類型。 ## 什么是編程中的多態? 多態是一種方法根據它所作用的對象做不同事物的能力。換句話說,多態允許您定義一個接口并具有多個實現。正如我們在上面的例子中看到的那樣,我們已經定義了方法`sound()`并且在不同的 2 個子類中具有它的多個實現。 將在運行時確定將調用哪個`sound()`方法,因此我們上面給出的示例是**運行時多態示例**。 > 多態的類型和方法重載&amp;覆蓋在單獨的教程中。你可以在這里引用它們: > 1\. [Java 中的方法重載](https://beginnersbook.com/2013/05/method-overloading/) - 這是編譯時間(或靜態多態)的一個例子 > 2\. [Java 中的方法覆蓋](https://beginnersbook.com/2014/01/method-overriding-in-java-with-example/) - 這是運行時間(或動態多態)的一個例子 > 3\. [多態的類型 - 運行時和編譯時間](https://beginnersbook.com/2013/04/runtime-compile-time-polymorphism/) - 這是我們的下一個教程,我們詳細介紹了多態的類型。在推薦這個主題之前,我會建議你通過方法重載和覆蓋。 讓我們寫下它的完整代碼: ## 例 1:Java 中的多態 **運行時多態示例:** Animal.java ```java public class Animal{ public void sound(){ System.out.println("Animal is making a sound"); } } ``` Horse.java ```java class Horse extends Animal{ @Override public void sound(){ System.out.println("Neigh"); } public static void main(String args[]){ Animal obj = new Horse(); obj.sound(); } } ``` 輸出: ```java Neigh ``` Cat.java ```java public class Cat extends Animal{ @Override public void sound(){ System.out.println("Meow"); } public static void main(String args[]){ Animal obj = new Cat(); obj.sound(); } } ``` 輸出: ```java Meow ``` ## 例 2:編譯時多態 方法重載另一方面是編譯時多態示例。 ```java class Overload { void demo (int a) { System.out.println ("a: " + a); } void demo (int a, int b) { System.out.println ("a and b: " + a + "," + b); } double demo(double a) { System.out.println("double a: " + a); return a*a; } } class MethodOverloading { public static void main (String args []) { Overload Obj = new Overload(); double result; Obj .demo(10); Obj .demo(10, 20); result = Obj .demo(5.5); System.out.println("O/P : " + result); } } ``` 這里方法`demo()`重載 3 次:第一種方法有 1 個`int`參數,第二種方法有 2 個`int`參數,第三種方法有`double`參數。要調用哪個方法取決于調用方法時傳遞的參數。這發生在編譯時而不是運行時,因此這種類型的多態稱為編譯時多態。 **輸出:** ```java a: 10 a and b: 10,20 double a: 5.5 O/P : 30.25 ```
                  <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>

                              哎呀哎呀视频在线观看