多态,从字面理解就是多种形态。
在生活中的例子也有很多例子,比如:windows系统有Administrator用户,其下有普通用户、Guest用户等不同形态;世界满地是Person,其下有开挂民族、战斗民族等不同形态;同样按下F1键,在word、excel、powerpoint 中弹出的帮助文档都不一样。同一事件发生在不同事物上能产生不同的效果。
多态存在的三个必要条件:
1、要有继承
2、要重写父类的方法
3、父类引用指向子类对象
以下所有内容来自百度百科【http://baike.baidu.com/link?url=r8jM3KDW0ev8U8JAibt-yS9gONRbssROQ1nHrWQPdDCL2I28ChL0Y7kknsSA1A-BZGC0dzS3HQ72DIN7XdEbkrE9axC72Bg-8xo8s0_wyca】
public interface Parent//父类接口
{
public void simpleCall();
}
public class Child_A implements Parent
{
public void simpleCall();
{
//具体的实现细节;
}
}
public class Child_B implements Parent
{
public void simpleCall();
{
//具体的实现细节;
}
}
//当然还可以有其他的实现
然后,我们就可以看到多态所展示的特性了:
//父类引用指向子类对象
Parent pa = new Child_A();
pa.simpleCall()则显然是调用Child_A的方法;
Parent pa = new Child_B();
pa.simpleCall()则是在调用Child_B的方法。
所以,我们对于抽象的父类或者接口给出了我们的具体实现后,pa 可以完全不用管实现的细节,只访问我们定义的方法,就可以了。事实上,这就是多态所起的作用,可以实现控制反转。这在大量的J2EE轻量级框架中被用到,比如Spring的依赖注入机制。