C++封装继承多态理解
面向对象的三个基本特征: 封装 、继承 、多态
简单概括三大特性作用:
封装是为了代码模块化和增加安全性
继承是为了重用和扩展现有的代码模块
多态是为了接口复用
封装:
保护数据成员,不让类以外的程序直接访问或者修改类的成员,只能通过其成员对应方法访问(即数据封装)
隐藏方法实现的具体细节,仅仅提供接口, 内容修改不影响外部调用(即方法封装)
继承:
三种继承方式: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.定义 封装:将类的某些信息隐藏在类内部(private),不允许外部程序直接访问,而是通过该类提供的公共属性(public)来实现对隐藏信息的操作和访问 快捷键:prop+TAB ...
- 小白理解——封装继承多态
一.封装 是什么:首先是抽象,把事物抽象成一个类,其次才是封装.对外表示为一个对象,隐藏对象的属性和动作实现的细节,仅对外公开接口. ...
- Java继承_Hachi君浅聊Java三大特性之 封装 继承 多态
Hello,大家好~我是你们的Hachi君,一个来自某学院的资深java小白.最近利用暑假的时间,修得满腔java语言学习心得.今天小宇宙终于要爆发了,决定在知乎上来一场根本停不下来的Hachi君个人 ...
- python 参数类型的多态_【Python】面向对象:类与对象\封装\继承\多态
六.Python面向对象--类与对象\封装\继承\多态 1.什么是面向对象编程 1.1 程序设计的范式:程序可控,易于理解 1.2 抽象并建立对象模型 1.3 程序是不同对象相互调用的逻辑.每个对象在 ...
- c语言编程 菲薄拉,C语言设计模式-封装-继承-多态
快过年了,手头的工作慢慢也就少了,所以,研究技术的时间就多了很多时间,前些天在CSDN一博客看到有大牛在讨论C的设计模式,正好看到了,我也有兴趣转发,修改,研究一下. 记得读大学的时候,老师就告诉我们 ...
- 大数据笔记8—java基础篇4(面向对象-封装-继承-多态)
面向对象 一.面向对象 1.面向过程 1.2.举例 1.3.总结 二.面向对象 1.简述 2.举例 3.思想特点 2.1.类的定义格式 2.1.1.简述 2.2.2.格式 2.3.3.示例 三.类的使 ...
- 面向对象 编程及面向对象三大属性:封装 继承 多态
面向对象 面向对象(Object Oriented,OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面.应用结构.应用平台.分布式系统.网络管理结构. ...
- 白话文带你了解 封装 继承 多态
这里讲的仅仅是带你理解 封装 继承 多态 染好您可以移步去别的文章学习具体的实现 (只是个人理解 您可以不爱,请别伤害哦!) 首先你要知道 java是面向对象的,说白了就是我拿你当个人,请认清你的地位 ...
- python多态的三种表现形式_python小结----面向对象的三大特征(封装,继承,多态)
面向对象的三大特征: 封装,继承,多态 面向对象的编程思想核心:高类聚,低耦合–程序的设计模式范畴 封装 什么是封装: 在面向对象编程的思想中,对代码进行高度封装,封装又叫包装 封装就是指将数据或者函 ...
- python--编写程序:实现乐手弹奏乐器,乐手可以弹奏不同的乐器而发出不同的声音------使用类的封装继承多态的问题/使用面向对象的思想,设计自定义类,描述出租车和家用轿车的信息
编写程序:实现乐手弹奏乐器,乐手可以弹奏不同的乐器而发出不同的声音 ------使用类的封装继承多态的问题 class Instrumnet():#乐器类def make_sound(self):pa ...
最新文章
- linux下命令行安装anaconda3+pytorch+fastai
- Java Nashorn--Part 3
- Ribbon 与 Nginx 区别
- centos7 搭建dhcp服务器
- 什么是机器学习?有哪些应用?终于有人讲明白了
- CentOS7环境下搭建flume
- Linux环境下利用句柄恢复Oracle误删除的数据文件
- 作业二在校大学生零食消费调查问卷
- 输入法android版,享受流畅手机输入 百度手机输入法Android版试用
- 如何搭建监狱高清1080P OTT/IPTV电视系统
- 前端书籍推荐之《精通JavaScript+jQuery》
- vue使用a标签下载文件_vue+iview 通过a标签实现文件下载
- Matlab中max函数详解
- this指向情况详解
- 一枚namecheap续费可用的优惠码
- 为什么现在很多人不看好商汤科技?
- linux里数据库退格,Oracle Database for Linux 不能使用退格键
- Office2016 Excel的VBA打开显示内存溢出
- 微信编辑器——构思编辑器教你如何学好图文排版
- 泛函,变分与变分不等式