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
通过接口实现多态,同样可以实现不同子类对象的相同调用方式。
多态的重要用途是增加代码的灵活性,使得代码更加可扩展、可维护,减少重复性代码。