Java語言多態,指的是同一類對象,在不同的情況下可以表現出不同的行為特征。
其實多態的實現機制是利用了Java里面的三大特性:封裝、繼承和重寫。在Java中,我們可以利用繼承關系去實現多態,也可以利用接口去實現多態。
// 使用繼承實現多態 class Animal { public void Sound() { System.out.println("Animal makes sound"); } } class Dog extends Animal { public void Sound() { System.out.println("Dog barks"); } } class Cat extends Animal { public void Sound() { System.out.println("Cat meows"); } } Animal animal = new Animal(); animal.Sound(); // Output: Animal makes sound Animal dog = new Dog(); dog.Sound(); // Output: Dog barks Animal cat = new Cat(); cat.Sound(); // Output: Cat meows
通過上面的例子可以看出,雖然我們實例化的是Animal類,但是通過向上轉型,我們可以讓該實例訪問與其實際類型不匹配的方法,從而實現了多態
// 使用接口實現多態 interface Shape { void draw(); } class Circle implements Shape { public void draw() { System.out.println("Circle drawn"); } } class Rectangle implements Shape { public void draw() { System.out.println("Rectangle drawn"); } } Shape s1 = new Circle(); s1.draw(); // Output: Circle drawn Shape s2 = new Rectangle(); s2.draw(); // Output: Rectangle drawn
通過接口實現多態,同樣可以實現不同子類對象的相同調用方式。
多態的重要用途是增加代碼的靈活性,使得代碼更加可擴展、可維護,減少重復性代碼。