概念

面向对象的三大特性之一“多态”。多态表示不同的对象可以执行相同的动作,但要通过他们自己的实现代码来执行。多态首先是建立在继承的基础上的,先有继承才能有多态。多态是指不同的子类在继承父类后分别都重写覆盖了父类的方法,即父类同一个方法,在继承的子类中表现出不同的形式。多态成立的另一个条件是在创建子类时候必须使用父类new子类的方式。

例子理解

父亲是唱戏的,但是这天父亲需要让儿子代替自己去上台。这个时候

1、子类是以父类的身份上台

2、子类模仿父类的唱戏手法表演。注意这里说的是模仿,模仿也就是学的在像也不是儿子自己的方法。

3、子类自己特有的方法不可以展现出来

代码体现

有一个加减乘除的计算方法。以下是父类

//运算类
public class Operation{
private double _numberA=0;
private double _numberB=0;
public double GetNumberA(){
return _numberA;
}
public void SetNumberA(double NumberA){
_numberA=NumberA;
}
public double GetNumberB(){
return _numberB;
}
public void SetNumberA(double NumberB){
_numberA=NumberB;
}
public double GetResult(){
double result=0;
return result;
}
}

子类继承父类

//加法类
public class OperationAdd extends Operation{
@override
public double GetResult(){
return super.GetNumberA()+super.GetNumberB();
}
}

//减法类
public class OperationSub extends Operation{
@override
public double GetResult(){
return super.GetNumberA()-super.GetNumberB();
}
}

多态的体现是在父类的引用指向子类的 对象

//简单工厂类
public class OperationFactory{
public static Operation createOperate(String operate){
Operation oper=null;
switch (operate){
case "+"
oper=new OperationAdd();
break;
case"-"
oper=new OperationSub();
break;
}
return oper;
}
}

 

简单总结:多态的前提是建立在继承之上的,父类需要有一个虚拟的方法(虚方法),子类去重写父类的方法,也就是父类的引用指向子类的对象,Animal animal=new Cat();