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