4.类的继承

一.类与类之间的关系
 
 1.类与类之间可能存在共性。
 2.类与类之间必定会有差异。
 3.为了节约开发时间和代码量,我们在设计类时可以把类的共享对象抽出来形成一个基础类(基类)
 4.使用基类+差异 = 派生类
 
 
二.继承的语法
 1.在设计一个类时如果已有的类中有它需要的成员,它可以从已有的类中继承哪些成员,被继承的类叫父类或基类,继承类叫作派生类或子类。
1  class 类名 : 继承方式 基类1,继承方式 基类2,...
2  {
3  
4  }
5  
 
 2.子类会完全继承父类中的所有成员(包括能访问和不能访问的)
 
 3.在设计类时如何形成继承关系
  类的设计:
   a.根据问题找对象。
   b.把对象中我们需要的属性和行为抽象出来
   c.把抽象出来的结构封装到一个class中形成一个类
   d.使用抽象出来的类进行实例化
   e.对象调用成员函数解决问题
  继承就是在对对象抽象的结果进行归纳总结,找出它们的共性形成基类,再把基类+差异派生出子类。
 
 4.继承的优点:代码复用
  子类在继承父类后可以节约大量的代码, 节省开发时间,缩短开发周期
 
 5.继承的缺点:
  a.继承会提高类与类之间的耦合度
  b.会降低代码的安全性和可维护性
 
 
三.使用继承要注意的问题
 
 1.继承虽然可以获取父类中的所有成员,但是子类中可以屏蔽父类中的同名成员(即使是变量和函数同名也会同名)
 
 2.父子类间不可以形成重载,只有在同一作用域下的同名函数不同参数,const属性的同名函数才能形成重载
 
 3.父类中的成员在子类中的访问属性
  父类中的public和protected在子类中可以访问
  父类中的private在子类中不可以访问
 
 
 4.继承的方式
  不同的继承方式会影响子类中的父类的成员,在类外的访问方式
  public 不变
  protected 公有变保护,其他不变
  private 全部变成私有
 
 
四.虚函数
 
 1.子类中会隐藏父类中的同名函数,这种关系叫隐藏(但是这个时候假如你用一个父类的指针指向这个子类,那么调用父类和子类中的同名函数时候,会调用父类的)。
 
 2.在同一作用域下的同名函数,这种关系叫做重载。
 
 3.如果父类中的同名函数添加了virtual关键字,这种函数就叫做虚函数,子类会覆盖父类中同名的函数
 
 4.虚函数是实现多态的基础。
 
 
五.继承的构造,析构,拷贝
 
 1.在继承时,先调用父类的构造函数,在调用子类的构造函数
 
 2.在继承中,先调用子类的析构,在调用父类的析构
 
 3.拷贝构造也是先父类的拷贝构造在子类的拷贝构造
 
 4.在C++中,可以有多个父类,在构造时,会按基础表的顺序调用父类的构造函数。
 
 5.在析构时,子类会先调用自己的析构函数,然后再按照基础表的逆序来调用析构函数。
 
 可以将每一个类的构造析构比喻为一对括号 
原文地址:https://www.cnblogs.com/LyndonMario/p/9524501.html