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