• 多态你真的了解吗?


    概念

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

    例子理解

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

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

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

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

    代码体现

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

    1. //运算类
    2. public class Operation{
    3. private double _numberA=0;
    4. private double _numberB=0;
    5. public double GetNumberA(){
    6. return _numberA;
    7. }
    8. public void SetNumberA(double NumberA){
    9. _numberA=NumberA;
    10. }
    11. public double GetNumberB(){
    12. return _numberB;
    13. }
    14. public void SetNumberA(double NumberB){
    15. _numberA=NumberB;
    16. }
    17. public double GetResult(){
    18. double result=0;
    19. return result;
    20. }
    21. }

    子类继承父类

    1. //加法类
    2. public class OperationAdd extends Operation{
    3. @override
    4. public double GetResult(){
    5. return super.GetNumberA()+super.GetNumberB();
    6. }
    7. }
    8. //减法类
    9. public class OperationSub extends Operation{
    10. @override
    11. public double GetResult(){
    12. return super.GetNumberA()-super.GetNumberB();
    13. }
    14. }

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

    1. //简单工厂类
    2. public class OperationFactory{
    3. public static Operation createOperate(String operate){
    4. Operation oper=null;
    5. switch (operate){
    6. case "+"
    7. oper=new OperationAdd();
    8. break;
    9. case"-"
    10. oper=new OperationSub();
    11. break;
    12. }
    13. return oper;
    14. }
    15. }

     

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

  • 相关阅读:
    【Hudi】数据湖Hudi核心概念与架构设计总结
    拥有游戏的一部分,写在我的世界禁用NFT之后
    【Python】数据处理:SQLite操作
    Day07 字符串
    PyQt GUI 编程-01
    C++类的函数运算操作
    MySQL学习(四)
    【星海出品】SDN neutron (四) 流分析
    防火墙软件 iptables
    C++ string容器
  • 原文地址:https://blog.csdn.net/weixin_45309155/article/details/124999529