假设有一个类 叫 鸟类,它拥有属性翅膀,拥有方法鸣叫,如下
public class Bird{
private Wing wing;
public void moo(){
System.out.println("鸟叫声");
}
}
鸟类封装了 翅膀类和moo方法;另外有两个类都继承鸟类并重写了moo方法,分别是鹦鹉和麻雀如下:
鹦鹉类:
public class Parrot extends Bird{
public void moo(){
System.out.println("鹦鹉的叫声");
}
}
麻雀类:
public class Sparrow extends Bird{
public void moo(){
System.out.println("麻雀的叫声");
}
}
有个孩子他想听鸟叫,就有个孩子类
public class Haizi{
public void listen(Bird bird){
bird.moo();
}
/*这时多态就很好的体现了,孩子想听鸟叫,无论什么鸟都可以给他,但是你想让他和鹦鹉
说话,就给一只鹦鹉传给listen方法,结果他就听到了鹦鹉的叫声,程序输出:鹦
*鹉的叫声
*/
public static void main(String[] args) {
new Haizi().listen(new Parrot());
}
}
多态实现了动态绑定,让程序有了很好的扩展性,比如想给他一只燕子,就只需要写个燕子类Swallow继承Bird方法就可以了