多态(polymorphism)是面向对象编程中的一个重要概念,它指的是同一个方法调用在不同的对象上可能会有不同的行为。多态可以通过继承和接口来实现,使得代码更加灵活和可扩展。
要点
- 多态是方法的多态,不是属性的多态
- 多态的实现需要满足以下条件:
- 继承:子类继承父类或者实现接口
- 重写:子类重写父类的方法或者实现接口的方法
- 父类引用指向子类对象:父类类型的变量可以引用子类类型的对象
- 父类引用指向子类对象后,可以通过父类引用调用子类重写的方法,这时会执行子类的方法实现,而不是父类的方法实现,这就是多态的表现
代码示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| package study.ghr.pk1;
class Animal { public void shout() { System.out.println("哇哇哇"); } }
class Dog extends Animal { public void shout() { System.out.println("汪汪汪"); } public void seeDoor() { System.out.println("看门"); } }
class Cat extends Animal { @Override public void shout() { System.out.println("喵喵喵"); } public void catchMouse() { System.out.println("抓老鼠"); } }
public class TestPolymorphism { public static void main(String[] args) { Animal a1 = new Dog(); a1.shout();
Animal a2 = new Cat(); a2.shout();
Dog d1 = (Dog) a1; d1.seeDoor();
} }
|