了解Java 中的動態和靜態多態性
Java 中的多態性允許不同類別的物件以相似的方式運行,儘管它們之間存在差異。這種靈活性是透過兩種類型的多態性來實現的:動態和靜態。
動態多態性
也稱為運行時多態性,動態多態性在子類別中發生方法重寫時發生。對重寫方法的呼叫在運行時會根據實際物件類型進行解析。
考慮以下範例:
<code class="java">class Animal { public void move() { System.out.println("Animals can move"); } } class Dog extends Animal { @Override public void move() { System.out.println("Dogs can walk and run"); } } public class Main { public static void main(String[] args) { Animal animal = new Animal(); // Animal reference and object Animal dog = new Dog(); // Animal reference but Dog object animal.move(); // Output: Animals can move dog.move(); // Output: Dogs can walk and run } }</code>
在此範例中,move() 方法在狗類。當動物引用呼叫 move() 方法時,物件的實際類型(Animal 或 Dog)決定了運行時的行為。這就是動態多態。
靜態多態(方法重載)
靜態多態性,也稱為編譯時多態性,當存在多個同名但參數列表不同的方法時,就會發生這種情況。同一個班級。對正確方法的呼叫是在編譯時根據傳遞的參數的數量和類型確定的。
考慮以下範例:
<code class="java">class Calculation { void sum(int a, int b) { System.out.println(a + b); } void sum(int a, int b, int c) { System.out.println(a + b + c); } public static void main(String[] args) { Calculation calculation = new Calculation(); calculation.sum(10, 10, 10); // Output: 30 calculation.sum(20, 20); // Output: 40 } }</code>
在此範例中, sum()方法重載了不同的參數清單。對正確 sum() 方法的呼叫是在編譯時根據傳遞的參數數量決定的。這就是靜態多型或方法重載。
以上是Java中動態多型和靜態多態有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!