面向对象语言C++的3大特性:封装、继承、多态

封装:将客观事物抽象成类,每个类对自身的数据和方法实行protection(private, protected,public)
封装意味着隐藏

继承: 继承意味着重用,子类可以复用父类的一些属性和方法。

继承的分类:

   
   
   
   
  1. 单继承、多继承、virtual继承: 
  2. 从一个基类派生的继承称为单继承 
  3. 从多个基类派生的继承称为多继承 
  4. virtual关键字可以实现虚拟继承,使用虚拟继承后,当系统碰到多重继承的时候,会保证继承类成员函数的唯一性。 
  5. 派生类共有三种C++类继承方式:公有继承(public),私有继承(private),保护继承(protected) 
   
   
   
   
  1. public 继承:意味 "is-a" 的关系 
  2. private继承:意味 根据某物实现出,继承实现 
  3. 复合:意味“has-a“和根据某物实现出 

接口继承与实现继承:

   
   
   
   
  1. public继承下,子类总是继承基类的接口 
  2. private继承,意味着只有实现部分被继承,接口部分被略去。 
  3.  
  4. public继承下: 
  5. 声明一个pure virtual函数的目的是让子类只继承其接口 
  6. 声明一个virtual函数的目的是让子类继承该函数的接口和缺省实现,即可以修改实现 
  7. 声明一个non-virtual函数的目的是让子类继承该函数的接口和一份强制性实现 

多态:接口的多种不同的实现方式即为多态, 同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。简言“一个接口,多种实现”
C++中的多态性具体体现在运行和编译两个方面,运行时多态是动态多态,编译时多态是静态多态,
C++中,实现多态有以下方法:重载,覆盖

类成员函数的重载、覆盖(重写)和隐藏区别:

   
   
   
   
  1. 1. 成员函数被重载的特征: 
  2.   a、相同的范围(在同一个类中); 
  3.   b、函数名字相同; 
  4.   c、参数不同; 
  5.   d、virtual 关键字可有可无。 
  6.  
  7. 2. 覆盖是指派生类函数覆盖基类函数,特征是: 
  8.   a、不同的范围(分别位于派生类与基类); 
  9.   b、函数名字相同; 
  10.   c、参数相同; 
  11.   d、基类函数必须有virtual关键字。 
  12.  
  13. 3. “隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下: 
  14.   a、如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,
  15.      基类的函数将被隐藏(注意别与重载混淆)。 
  16.   b、如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual 关键字。
  17.      此时,基类的函数被隐藏(注意别与覆盖混淆)