多态你真的了解吗?
原创
©著作权归作者所有:来自51CTO博客作者小谷姐姐的原创作品,请联系作者获取转载授权,否则将追究法律责任
概念
面向对象的三大特性之一“多态”。多态表示不同的对象可以执行相同的动作,但要通过他们自己的实现代码来执行。多态首先是建立在继承的基础上的,先有继承才能有多态。多态是指不同的子类在继承父类后分别都重写覆盖了父类的方法,即父类同一个方法,在继承的子类中表现出不同的形式。多态成立的另一个条件是在创建子类时候必须使用父类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();