面向对象的三个基本特征: 封装 、继承 、多态

简单概括三大特性作用:
    封装是为了代码模块化和增加安全性
    继承是为了重用和扩展现有的代码模块
    多态是为了接口复用
    
封装:
    保护数据成员,不让类以外的程序直接访问或者修改类的成员,只能通过其成员对应方法访问(即数据封装)
    隐藏方法实现的具体细节,仅仅提供接口, 内容修改不影响外部调用(即方法封装)    
    
继承:
    三种继承方式:public、protected、private。
    继承的目的: 重用代码,一个类B继承另一个类A,则B就继承了A中申明的成员以及函数
    派生的目的: 代码扩展,继承自一个类然后添加自己的属性和方法则实现代码的扩展
缺陷:
    父类变化了子类必须变化 增加了耦合性
                
多态:
    接口的复用,一个接口多种实现
    用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数
C++多态性是通过虚函数来实现的, 虚函数允许子类重新定义成员函数,而子类重新定义父类的做法称为覆盖或者重写
函数重载为允许多个不同名称的函数,这些函数函数列表不同或者函数个数不同或者两者都不同
    
编译时多态:主要指方法的重载 (在编译器编译期间就可以确定函数的调用地址,并产生代码,是静态的)
运行时多态:通过虚函数实现     (在运行时确定的调用地址)

C++中,实现多态有以下方法:虚函数、抽象类(至少包含一个纯虚函数 不能创建实例)、重载、覆盖、模板。    
    
继承时的构造函数:
(1)基类的构造函数不能被继承,派生类中需要声明自己的构造函数
(2)声明构造函数时 只需要对本类新增成员进行初始化,对继承基类成员的初始化 自动调用基类构造函数完成
(3)派生类的构造函数需要给基类的构造函数传递参数
(4)单一继承是构造函数为
    派生类名::派生类名(基类所需要的形参, 本类所需要的形参):基类名(参数){本类成员初始化赋值}
(5)当基类中声明有默认形式的构造函数或未声明构造函数时 派生类构造函数可以不向基类传递参数
(6)若基类中未声明构造函数,派生类中也可以不声明 全采用缺省形式构造函数
(7)    当基类中声明有带行参的构造函数时,派生类也应该声明带形参数构造函数,并将参数传递给基类构造函数
(8)构造函数的调用顺序
    a 调用基类构造函数, 调用顺序按照他们被继承是声明的顺序(从左至右)
    b 调用成员对象的构造函数,调用顺序按照他们在类的声明顺序
    c 派生类的构造函数体中的类容
继承时的析构函数:    
(1)基类的析构函数不能继承 派生类自行声明
(2)声明方法与一般(无继承)类的析构函数相同
(3)不需要显示的调用基类的析构函数 系统会自动隐士调用
(4)析构函数的调用次序和构造函数相反
    a 派生类中成员指针的析构 派生类自己析构
    b 派生类成员对象析构
    c 基类析构 从右到左顺序

C++封装继承多态理解相关推荐

  1. 封装 继承 多态理解

     一.封装 1.定义 封装:将类的某些信息隐藏在类内部(private),不允许外部程序直接访问,而是通过该类提供的公共属性(public)来实现对隐藏信息的操作和访问 快捷键:prop+TAB    ...

  2. 小白理解——封装继承多态

                                      一.封装 是什么:首先是抽象,把事物抽象成一个类,其次才是封装.对外表示为一个对象,隐藏对象的属性和动作实现的细节,仅对外公开接口. ...

  3. Java继承_Hachi君浅聊Java三大特性之 封装 继承 多态

    Hello,大家好~我是你们的Hachi君,一个来自某学院的资深java小白.最近利用暑假的时间,修得满腔java语言学习心得.今天小宇宙终于要爆发了,决定在知乎上来一场根本停不下来的Hachi君个人 ...

  4. python 参数类型的多态_【Python】面向对象:类与对象\封装\继承\多态

    六.Python面向对象--类与对象\封装\继承\多态 1.什么是面向对象编程 1.1 程序设计的范式:程序可控,易于理解 1.2 抽象并建立对象模型 1.3 程序是不同对象相互调用的逻辑.每个对象在 ...

  5. c语言编程 菲薄拉,C语言设计模式-封装-继承-多态

    快过年了,手头的工作慢慢也就少了,所以,研究技术的时间就多了很多时间,前些天在CSDN一博客看到有大牛在讨论C的设计模式,正好看到了,我也有兴趣转发,修改,研究一下. 记得读大学的时候,老师就告诉我们 ...

  6. 大数据笔记8—java基础篇4(面向对象-封装-继承-多态)

    面向对象 一.面向对象 1.面向过程 1.2.举例 1.3.总结 二.面向对象 1.简述 2.举例 3.思想特点 2.1.类的定义格式 2.1.1.简述 2.2.2.格式 2.3.3.示例 三.类的使 ...

  7. 面向对象 编程及面向对象三大属性:封装 继承 多态

    面向对象 面向对象(Object Oriented,OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面.应用结构.应用平台.分布式系统.网络管理结构. ...

  8. 白话文带你了解 封装 继承 多态

    这里讲的仅仅是带你理解 封装 继承 多态 染好您可以移步去别的文章学习具体的实现 (只是个人理解 您可以不爱,请别伤害哦!) 首先你要知道 java是面向对象的,说白了就是我拿你当个人,请认清你的地位 ...

  9. python多态的三种表现形式_python小结----面向对象的三大特征(封装,继承,多态)

    面向对象的三大特征: 封装,继承,多态 面向对象的编程思想核心:高类聚,低耦合–程序的设计模式范畴 封装 什么是封装: 在面向对象编程的思想中,对代码进行高度封装,封装又叫包装 封装就是指将数据或者函 ...

  10. python--编写程序:实现乐手弹奏乐器,乐手可以弹奏不同的乐器而发出不同的声音------使用类的封装继承多态的问题/使用面向对象的思想,设计自定义类,描述出租车和家用轿车的信息

    编写程序:实现乐手弹奏乐器,乐手可以弹奏不同的乐器而发出不同的声音 ------使用类的封装继承多态的问题 class Instrumnet():#乐器类def make_sound(self):pa ...

最新文章

  1. linux下命令行安装anaconda3+pytorch+fastai
  2. Java Nashorn--Part 3
  3. Ribbon 与 Nginx 区别
  4. centos7 搭建dhcp服务器
  5. 什么是机器学习?有哪些应用?终于有人讲明白了
  6. CentOS7环境下搭建flume
  7. Linux环境下利用句柄恢复Oracle误删除的数据文件
  8. 作业二在校大学生零食消费调查问卷
  9. 输入法android版,享受流畅手机输入 百度手机输入法Android版试用
  10. 如何搭建监狱高清1080P OTT/IPTV电视系统
  11. 前端书籍推荐之《精通JavaScript+jQuery》
  12. vue使用a标签下载文件_vue+iview 通过a标签实现文件下载
  13. Matlab中max函数详解
  14. this指向情况详解
  15. 一枚namecheap续费可用的优惠码
  16. 为什么现在很多人不看好商汤科技?
  17. linux里数据库退格,Oracle Database for Linux 不能使用退格键
  18. Office2016 Excel的VBA打开显示内存溢出
  19. 微信编辑器——构思编辑器教你如何学好图文排版
  20. 泛函,变分与变分不等式

热门文章

  1. RTKLIB学习:数据下载和数据转换
  2. 嵌入式linux ucgui,成功移植ucGUI到Linux上
  3. 图论复习(二)-——哈密顿图及其应用
  4. android 模拟器 itools,itools安卓模拟器
  5. java svn 创建分支_Eclipse下svn的创建分支/合并/切换使用
  6. 发现一个导致Arduino无法打开串口监视器问题
  7. linux离线安装pg数据库
  8. 宝塔面板安装和使用教程(详细)
  9. 【材料计算】第一性原理、密度泛函理论、从头算之间的关系
  10. 灵格斯词典(电脑端)+欧陆词典(手机端)