目录

一、概念

二、深层刨析

1.子类继承了父类哪些东西?

2.继承的规则

继承与组合

3.继承三步骤

4.数据成员构造析构顺序

三、使用

1.如何在子类中对从基类中继承来的数据成员进行初始化?

2.无参和有参构造函数调用的差别?

3.赋值运算符的使用

4.继承下的静态数据成员

四、隐藏规则


  • 面向对象三大特征:

    • 封装继承多态

一、概念

定义:一个类自动拥有了来自另外一个类的属性和方法,我们管这种属性叫做继承。

层次关系:上层派生下层,下层继承上层

书写格式

class 子类:继承权限 基类
{};

如果A是基类,B是派生类,那么B将继承A的数据和函数。

class A
{
public:void Fun1(void);void Fun2(void);
};
class B:public A //继承是共有的,如果没有写权限,默认是私有继承
{
public:void Fun3();void Fun4();
};
main()
{B b;b.Fun1();//B从A继承了函数Fun1b.Fun2();//B从A继承了函数Fun2b.Fun3();b.Fun4();
}

二、深层刨析

1.子类继承了父类哪些东西?

  • 除了构造和析构函数之外,无论几代继承,其余的全盘被继承
  • 被继承不代表能被访问访问的两种形式:1.外界访问(主函数..)2.成员函数访问

1.子类能够继承所有数据成员

  • 下图为例,B继承了A(没有写权限,默认是私有继承),因为A中的数据类型大小为12,而子类B继承了所有的数据成员(m_i,m_j,m_k),因此,下面的代码输出结果为12。

2.子类能够继承所有成员函数

  • 如下代码所示,A中有成员函数print(),让B继承A,外部成员函数main内可见,B的对象b可以访问A的成员函数print。

3.公有和保护的可以被访问,私有的可以被继承,不能被访问。

  • 如下代码中,原A类中的数据成员m_i :公有,m_j:保护,m_k:私有,而被B共有继承后,B中的数据成员m_i 仍未:公有,m_j:保护,m_k:私有。原本基类的数据成员类型被继承下来后类型不变。

4.保护继承和私有继承中:公有和保护可以被继承,但所有的数据成员外界都不能访问。但是自身的成员函数,内部无论是公有、保护还是私有都可以访问

  • 如下代码所示,C保护继承A,把所有public和protected的成员函数和数据成员都私有化了,因为在主函数内无法访问m_i,m_j,m_k。

 总结:

子类权限(右

面向对象的三大特质之继承 | 继承的规则和顺序是什么?什么是隐藏规则?相关推荐

  1. 到底什么是面向对象,面试中怎么回答。面向过程和面向对象的区别是什么。java跨平台特性以及java和C++的区别。面向对象的三大特性——封装、继承和多态。面向对象的高拓展性以及低耦合度怎么体现?

    Java语言具有的特点:面向对象.跨平台.多线程以及网络编程 1. 和C++的区别 1.1 Java隐蔽了C++的指针,避免指针直接操作,程序更加安全. 1.2 Java类继承只能单继承,避免了C++ ...

  2. 面向对象的三大特性------封装、继承、多态

    一.封装 1.封装的思想 1.1封装的概述 封装是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些 ...

  3. php对象的三大特征,关于php中面向对象的三大特征(封装/继承/多态)

    最近在学习php的过程中发现它其实比java的语言要松散很多,而且很多人说上手比较容易,但是智言我个人并不是很认同这样的观点,因为其实java的整个语法规则都非常的有条有理,虽然函数很多,但是至少经常 ...

  4. 面向对象的三大特征之一:继承

    继承: 面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制.继承完全可以理解成类之间的类型和子类型关系.需要注意的地方:继承语法   class 派生类名(基类名):/ ...

  5. 面向对象的三大特征:封装 继承 多态

    封装: 封装的概念: 代码的整合, 封装的层次: 函数的封装: 把一组操作整合在一起 类的封装: 把属性和方法整合在一起 结构的封装:根据操作的性质(模型/控制操作/交互视图)进行结构设计封装 ...

  6. 2021-08-14c++面向对象的三大特性之二——继承

    继承 同种动物有自己的共性,又有自己的个性 有一些类具有同样的共性,但同时又有自己的个性,这时候就需要继承一些类的特性来减少重复的代码量. 继承可以减少重复的代码 class A :pubilc B; ...

  7. 面向对象的 JavaScript:封装、继承与多态

    本文作者:家园工作室研发组成员 @维尔希宁 本文出处: 面向对象的 JavaScript:封装.继承与多态​blog.lenconda.top 本文遵循署名-非商业性使用-禁止演绎3.0 未本地化版本 ...

  8. 黑马程序员_面向对象的三大特征

    ---------------------- ASP.Net+Android+IO开发S..Net培训.期待与您交流! ---------------------- 1.面向对象的三大特征之一:封装  ...

  9. 【JavaSe】面向对象篇(五) 三大特征之二继承

    JavaSe·面向对象篇(五) 三大特征之二继承 1. 面向对象三大特质之继承 1.1 由来 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那 ...

最新文章

  1. Java 如何使用radio button保存值
  2. 外贸网络推广浅析新建网站该如何更快速进入搜索结果首页?
  3. PowerShell管理Azure
  4. Go的sync(一)
  5. Jquery日历编写小练习
  6. 20165203 《网络对抗技术》week1 Kali的安装与配置
  7. P3327 [SDOI2015]约数个数和
  8. HyperV2012的学习,从这里开始
  9. XMLDictionary 解析的使用
  10. 【原创】SSAS-引用维度与多数据源、多数据源视图引发分区错误
  11. 宽度学习详解(Broad Learning System)
  12. 解决unable to access ‘https://github.com/xxx/xxx.git/‘: OpenSSL SSL_read: Connection was reset, errno
  13. 忆我在北邮四年中的几位老师(全)
  14. linux上2048游戏程序,在Linux系统下完全可以玩2048游戏
  15. chrome安装js插件
  16. Mac安装Java反编译工具JD-GUI(解决打不开问题)
  17. USB3.0:VL817Q7-C0的LAYOUT指南(二)
  18. 未来可期(关于高考和现在处境的看法)
  19. 分享100个ASP源代码总有一个是你想要的
  20. Springboot实践心得

热门文章

  1. PHP关于Session的设置与销毁
  2. 基于JQUERY的WEB在线流程图设计器GOOFLOW 0.9版
  3. ESP-IDF3.0
  4. hp服务器bios安装系统,服务器hp进bios设置
  5. 单位序列响应和阶跃响应的z域分析 matlab,信号与系统 [薛莲,周茉,刘少敏 主编] 2015年版...
  6. PCL: 获取点云的质心(几何中心点)
  7. JVS低代码如何实现复杂物料编码?
  8. 浏览器插件FeHelper学习:页面取色器
  9. Idea之阿里巴巴代码规范
  10. 初学python100例-案例22 输出三角形图案 青少年python编程 少儿编程案例讲解