Java是一門強大的面向對象編程語言,其中的重載和多態是兩個重要的概念。它們之間有什么區別與聯系呢?
重載是指在同一個類中,有多個名稱相同的方法,但是它們的參數列表不同。例如:
public int add(int x, int y) { return x + y; } public double add(double x, double y) { return x + y; }
這里有兩個add方法,一個接收兩個整數參數,一個接收兩個雙精度浮點數參數。它們使用相同的方法名,但是由于參數列表不同,Java編譯器可以區分它們,并且在調用時選擇正確的方法。
多態是指同一個對象,可以在不同的情況下表現出不同的行為。例如:
public class Animal { public void makeSound() { System.out.println("Unknown animal sound"); } } public class Dog extends Animal { public void makeSound() { System.out.println("Bark!"); } } public class Cat extends Animal { public void makeSound() { System.out.println("Meow!"); } }
這里有三個類,一個是Animal,兩個是它的子類Dog和Cat。它們都有一個makeSound方法,但是實現不同。現在如果有一個Animal類型的變量,可以引用Dog或Cat的對象:
Animal a1 = new Dog(); Animal a2 = new Cat(); a1.makeSound(); // 輸出"Bark!" a2.makeSound(); // 輸出"Meow!"
即使這兩個對象是不同的類,但是它們都是Animal類型的,而在調用makeSound方法時,Java虛擬機會根據對象的實際類型來選擇正確的實現。這就是多態。
所以,重載和多態都是基于Java的面向對象特性實現的。重載是針對方法的,而多態是針對對象的。它們可以在代碼中靈活地使用,使代碼更具可讀性和可重用性。
上一篇java的重載和多態
下一篇PHP html教程