Java是一種面向對象的編程語言,它支持兩種多態性:靜態多態性和動態多態性。
靜態多態性是指在編譯時根據參數的類型來決定調用哪個方法。
<code class="java"> public class StaticPolymorphism { public static void main(String[] args) { HelloWorld helloWorld = new HelloWorld(); helloWorld.sayHello("Alice"); helloWorld.sayHello("Bob", 30); } } class HelloWorld { public void sayHello(String name) { System.out.println("Hello " + name); } public void sayHello(String name, int age) { System.out.println("Hello " + name + ", you are " + age + " years old"); } }
在上面的代碼中,HelloWorld類中有兩個名為sayHello的方法,一個接受一個String參數,另一個接受一個String參數和一個int參數。在main方法中,我們可以通過傳遞不同數量和類型的參數來調用這兩個方法。
動態多態性是指在運行時根據對象的實際類型來決定調用哪個方法。
<code class="java"> public class DynamicPolymorphism { public static void main(String[] args) { Animal animal1 = new Dog(); Animal animal2 = new Cat(); animal1.makeSound(); animal2.makeSound(); } } class Animal { public void makeSound() { System.out.println("I am an animal"); } } class Dog extends Animal { public void makeSound() { System.out.println("Woof!"); } } class Cat extends Animal { public void makeSound() { System.out.println("Meow!"); } }
在上面的代碼中,Animal類有一個名為makeSound的方法,而Dog和Cat類重寫了makeSound方法。在main方法中,我們實例化了一個Dog對象和一個Cat對象,并將它們賦值給一個類型為Animal的變量。然后調用它們的makeSound方法。由于實際類型是Dog和Cat,所以分別調用了它們的重寫方法。