原文链接:https://blog.csdn.net/weixin_43293737/article/details/86484688/
转载说明:感谢原作者!如有侵权,请联系我删除,谢谢!

为什么要使用多态?为了解决同一段代码在不同的对象调用时有不同的效果,避免了代码的冗余
实现多态的三个条件:

  1. 要有继承
  2. 要有虚函数重写
  3. 用父类指针(父类引用)指向子类对象…
#include "iostream"
using namespace std;
class animal
{public:virtual int eat(){return 10;}
};
class plant
{public:int eat(){return 25;}
};
class mouse :public animal//多态第一步,要有继承
{public:virtual int eat()//多态第二步,要有函数重写(重写发生在2个类之间,两个类之间有继承关系,且出现同名的函数;虚函数重写将发生多态){return 20;}
};
class bird :public animal
{public:virtual int eat(){return 30;}
};
void playLand(animal &animal,plant *plant)//多态的第三步,用父类指针(父类引用)指向子类对象....//即在函数的形参使用父类的对象替代子类对象,但是在调用重写了的虚函数时,仍然调用的是传递过来子类对象的函数
{if (animal.eat() > plant->eat()){cout << "动物赢了" << endl;}else{cout << "植物赢了" << endl;}
}
void main()
{animal animal1;mouse mouse1;bird bird1;plant flowers;playLand(animal1, &flowers);playLand(mouse1, &flowers);playLand(bird1, &flowers);
}

[转] c++的多态(一个接口,多种实现)相关推荐

  1. .NET Core中的一个接口多种实现的依赖注入与动态选择

    最近有个需求就是一个抽象仓储层接口方法需要SqlServer以及Oracle两种实现方式,为了灵活我在依赖注入的时候把这两种实现都给注入进了依赖注入容器中,但是在服务调用的时候总是获取到最后注入的那个 ...

  2. Spring和SpringBoot中针对单一接口多种实现的支持

    最近在工作中接触到了需要一个接口多种实现的这种情况,类似于hibernate选择对应方言的情况.我遇到的情况是上传文件的过程中可能存在多种文件系统.需要在配置文件中进行配置来确定使用哪种方式上传文件, ...

  3. 多态部分作业 1.按要求编写Java程序:(1)编写一个接口:InterfaceA,只含有一个方法int method(int n);

    1.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n): (2)编写一个类:ClassA来实现接口InterfaceA,实现int m ...

  4. [ASP.NET入门随想七]主角与配角——OO思想的多态、接口与委托

    [ASP.NET入门随想七]主角与配角 --OO思想的多态.接口与委托 曾几何时,我们的父辈接受到的对美好生活的描绘是:"楼上楼下.电灯电话",三十年过去了,电灯电话早已已成为我们 ...

  5. 继承 多态 抽象类 接口

    面向对象编程 包 继承 组合 多态 抽象类 接口 包 包(package)是组织类的一种方式. 使用包的主要目的是保证类的唯一性. java中已经提供给我们很多现成的类供我们选择,例如可以使用 imp ...

  6. 07 面向对象编程-结构、封装、继承、多态、接口

    文章目录 Struct定义 struct 方法 工厂模式 面向对象三大特性 封装 继承 接口 多态 Golang支持面向对象编程,但是和传统面向对象有区别,并不是纯粹面向对象的语言,只能说Golang ...

  7. Java——多态与接口

    1.设计一个排序类IntSort,该类中包含3个同名的方法sort,分别完成2个整型数.3个整型数以及整型数组(10个数)的排序.编写测试类完成方法的验证. 实验程序: package Test;pu ...

  8. 初始Java Java SE 包,继承,组合,多态,抽象类,接口

    目录 包 1.静态导入 2.将类放到包中 3.包的访问权限控制 继承 基本语法: 注意事项: protected 关键字 final 关键字 组合 多态 向上转型: 动态绑定 方法重写 重写的规则 : ...

  9. 黑马程序员——Java基础---继承,抽象,多态,接口,包,内部类

    -----------android培训.java培训.java学习型技术博客.期待与您交流!------------ 一.继承 (一)继承概述 多个类中存在相同属性和行为时,将这些内容抽取到单独一个 ...

  10. java 如何只暴露接口_Java并发异步编程,原来十个接口的活现在只需要一个接口就搞定...

    什么?对你没有听错,也没有看错 ..多线程并发执行任务,取结果归集~~ 不再忧愁-. 引言 先来看一些APP的获取数据,诸如此类,一个页面获取N多个,多达10个左右的一个用户行为数据,比如:点赞数,发 ...

最新文章

  1. exhaustion java_Java Exceptions
  2. C语言再学习 -- Linux 中常用基本命令
  3. C++ code:string stream(string流)学习大全
  4. Python format() 函数
  5. 【报告分享】食品饮料行业供应链发展与渠道变革趋势.pdf(附下载链接)
  6. java sqlserver 分页_java+sqlserver 使用分页存储过程
  7. Debian,从安装到喜欢
  8. win10虚拟打印服务器,win10虚拟打印机驱动怎么安装_win10系统安装虚拟打印机驱动教程...
  9. 无人机航摄地面站航线设计主要参数
  10. 关于cmwap和cmnet之间的区别
  11. P2P、P2C 、O2O 、B2C、B2B、 C2C是什么
  12. uiautomatorviewer无法启动
  13. Pytorch 小白记事本 1
  14. 利用huffman编码对文本文件进行压缩与解压(java实现)
  15. 如何强制关闭进程linux,4种强制关闭Ubuntu中无响应应用程序的方法
  16. 【计算机基础】 --- LSB、MSB与大/小端字节序
  17. 犯罪嫌疑人X的献身和三体
  18. C专家编程 第6章 运动的诗章:运行时数据结构 6.1 a.out及其传说
  19. 让子盒子在父盒子中垂直居中的七个方法
  20. UE4人物移动时的摄像机抖动

热门文章

  1. ASP.NET Page和Response 输出js的区别
  2. LeetCode Algorithm 451. 根据字符出现频率排序
  3. EduCoder Linux文件/目录高级管理二
  4. 832. Flipping an Image
  5. 226. Invert Binary Tree 翻转二叉树
  6. 数据库开发——MySQL——单表查询
  7. 数据结构和算法 —— 时间复杂度+空间复杂度
  8. 【机器视觉】 else算子
  9. 【ARM】Tiny4412裸板编程之异常(中断向量表)
  10. 组件面板 html 页面,Html - Bootstrap Panel面板