Java語言多態(tài),指的是同一類對象,在不同的情況下可以表現(xiàn)出不同的行為特征。
其實多態(tài)的實現(xiàn)機制是利用了Java里面的三大特性:封裝、繼承和重寫。在Java中,我們可以利用繼承關(guān)系去實現(xiàn)多態(tài),也可以利用接口去實現(xiàn)多態(tài)。
// 使用繼承實現(xiàn)多態(tài) 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類,但是通過向上轉(zhuǎn)型,我們可以讓該實例訪問與其實際類型不匹配的方法,從而實現(xiàn)了多態(tài)
// 使用接口實現(xiàn)多態(tài) 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
通過接口實現(xiàn)多態(tài),同樣可以實現(xiàn)不同子類對象的相同調(diào)用方式。
多態(tài)的重要用途是增加代碼的靈活性,使得代碼更加可擴展、可維護,減少重復性代碼。