1、多态性具体来说:就是同一个函数名称,作用在不同的对象产生不同的 ,主要针对的是基类和多个派生类之间的关系

例子:

#include<iostream>
using namespace std;
class animal
{
public:void sleep(){cout << "aniaml is sleeping" << endl;}void breath(){cout << "aniaml is breathing" << endl;}
};
class fish :public animal
{
public:void breath(){cout << "fish is breathing" << endl;}
};int main()
{fish fh;animal* an = &fh;an->breath();fh.breath();system("pause");return 0;
}

在例子中,定义了一个fish和animal类的对象,并且将fish类的对象赋值给animal类的对象an,。。。这里是指针变量,将fh的地址赋给了an,按照我们的理解

an对象调用的函数应该是属于fh地址中的函数,应该调用fish::breath()函数,,,但是在c++编译的过程中,编译器进行了类型的转换,此时c++编译器认为

an对象保存的是animal对象的地址,而不是指针变量指向的fh的地址,,,,所以函数调用的是animal::breath()函数。

在构造fish类的对象时,系统首先调用的是aniaml;类的构造函数取构造animal类的对象,然后才去调用fish类的对象,,当fish;类对象转换成aniaml

对象时,该对象被认为是元对象整个内存模型中的上半部分(fish对象的内存包含(类aniam累的对象站的内存和类fish对象自身占的额内存)),主要是因为fish类

是继承animal类的,fish的对象j中包含animal类的函数以及成员。

2、静态多态性

函数的重载主要有两种:

1、函数相同,但是参数的个数和参数类型不同

2、函数的参数相同但是属于不同的类

调用形式: 对象名。函数  或者 函数名前加上类::,作用域符::,表示调用这个类的::函数

#include<iostream>
using namespace std;
class point
{int x, y;
public:point(int a, int b){x = a;y = b;}double area(){return 0;}
};
class circle :public point
{int r;
public:circle(int a, int b,int c) :point(a, b), r(c){}double area(){return 3.14*r*r;}
};int main()
{point pob(16, 15);circle cob(20, 20, 10);cout << "pob.area" << pob.area() << endl;cout << "cob.area()" << cob.area() << endl;cout << cob.point::area() << endl;//表示派生类对象调用基类成员函数system("pause");return 0;
}

面向对象的多态性(1)相关推荐

  1. JAVA:使用面向对象的多态性模仿会员卡消费系统,设计会员卡类,可派生不同的会员卡类型,当使用不同的会员卡消费时其折扣不同。

    使用面向对象的多态性模仿会员卡消费系统,设计会员卡类,可派生不同的会员卡类型,当使用不同的会员卡消费时其折扣不同.如一般会员卡消费打9折:VIP会员卡打7折:超级VIP卡打5折.其具体的实现效果如下所 ...

  2. 面向对象的多态性(2)

    1.虚函数 在c++中,可以调用虚函数来实现运行时的多态性,,这样可以进行函数的重载 虚函数的定义是在基类中进行的,,当吧基类中的某一个成员函数定义成虚函数之后,就可以在派生类中重新定义, 在派生类重 ...

  3. 面向对象之多态性(基类引用可以指向子类)

    1.派生类的对象和基类是属于的关系,即 对象 is a X类,对象属于X类. 2.多态性的概念: 了解多态性之前,要熟悉引用和对象的区别: 对象存储在堆中,引用(符)存储在栈中,引用符的值是对象在堆中 ...

  4. 面向对象的特性(面向对象的多态性:转型,重载与重写)

    对于面向对象的特性,一般有两种说法:一种是三大特性,分别是封装,继承,多态,另外一种是封装,继承,多态,抽象:需要注意的是:这是面向对象的特性,不是java的特性(面向对象): 多态:多态是面向对象很 ...

  5. 面向对象的多态性(3)

    1.纯虚函数 当在基类中不能为虚函数给出一个有意义的实现时(就是没定义函数体中的具体内容),可以声明为纯虚函数,纯虚函数可以交给派生类来完成, 纯虚函数的作用只是为派生类提供一个一致的借口,,, 纯虚 ...

  6. java 面向对象的多态性——向上转型与向下转型

    目录 类定义了之后需要被调用定义对象才能执行. 在前几篇中讨论了抽象类和接口,其中抽象方法是对这样的动作的抽象描述:动作名称相同,但不同类别具体执行动作的内容不同. 如:人类有"工作&quo ...

  7. 面向对象方法综述(工具<方法<思维<价值观)

    思想起源于上世纪六十年代(和结构化方法一样) 最早的OOPL:Simula67 最纯的OOPL:Smalltalk smalltalk的贡献:它在系统设计中强调对象概念的统一,引入对象,对象类,方法, ...

  8. java第四节 类的继承/抽象/接口/多态性

    /* 类的继承 类的继承可以简化类的定义 java只支持单继承,不允许多重继承 可以有多层继承,即一个类可以继承其一个类的子类,如类B继承了类A,类C又可以继承类B 那么类C也间接继承了类A子类继承父 ...

  9. C++中多态性学习(上)

    多态性学习(上) 什么是多态? 多态是指同样的消息被不同类型的对象接收时导致不同的行为.所谓消息是指对类的成员函数的调用,不同的行为是指不同的实现,也就是调用了不同的函数.虽然这看上去好像很高级的样子 ...

最新文章

  1. java程序设计编程题_20165237 2017-2018-2 《Java程序设计》第十周考试补做及编程题...
  2. 1920+1080+android三星手机,三星Galaxy Note3能拍摄1080p视频吗?支持1080p播放吗?
  3. php curl https 443,PHP CURL支持HTTP、HTTPS 请求亲测可用
  4. Python sqrt() 函数
  5. mvc 调用其他控制器方法session丢失_Java从入门到放弃;MVC 模式
  6. MySQL binlog日志三种模式选择及配置
  7. 基于java的心理健康网站的设计与实现_心理评测网站设计与实现(JSP,MySQL)(含录像)...
  8. c语言三角函数乘法怎么表示,这个图里的三角函数 要怎么用c语言打出来
  9. 毕业论文免费查重软件测评及降重心得
  10. 零基础学UI设计教程之图标的设计形式讲解
  11. 数学建模国赛论文latex代码汇总
  12. stm32晶振匹配电容_晶振的匹配电容选择
  13. Amos中介效应检验
  14. [GUI] 使用MATLAB从图片中提取曲线数据
  15. 用java编程100道问题//10弟弟的作业,口算训练
  16. 如何使用vue开发公众号网页
  17. 浅谈framework之PowerManagerService
  18. 华为ENSP实验--基础
  19. 江苏省计算机高考试题,08-12江苏省单招计算机原理高考试题汇总
  20. 长沙有哪些优秀的互联网公司?长沙适合定居吗?

热门文章

  1. 基于eclipse创建android的helloworld工程
  2. CentOS6.8安装Python3.6.3
  3. SQL Server 2005系列教学(14) 用户管理
  4. js的apply方法使用详解,绝对NB
  5. SLAVE为什么一直不动了
  6. eclipse中配置tomcat之后指定项目部署的目录
  7. 调用webservice查询手机号码归属地信息
  8. 工作空间从Windows转向fc8
  9. 在线IDE之关键字另色显示
  10. Leetcode 90. 子集 II 解题思路及C++实现