一、面向对象相关概念
1、面向对象特点
面向对象的 4 大特点 :
- 抽象 : 只关注对象的功能和行为 , 而不过问实现的具体细节 ;
- 封装 : 将对象的 属性 和 方法 封装在一起 ;
- 继承 : 新类中继承现有类的 属性 和 方法 ;
- 多态 : 相同的操作作用于不同的对象 , 产生不同的结果 ;
2、类之间的关系
类之间的关系可以分为 三 大类 :
- HAS-A 类关系 : 类由多个部件组成 , 类中的数据也是其它的类 ;
- 聚合关系 Aggregation : 整体与部分之间的关系 , 部分可以脱离整体存在 ;
- 组合关系 Composition : 整体与部分之间的关系 , 二者不可分 , 强于聚合关系 ;
- USE-A 类关系 : 类对象之间存在关系 ;
- 关联关系 Association : 一个类中定义了其它类的对象作为 成员变量 ;
- 依赖关系 Dependency : 一个类的成员方法中使用了其它类的对象 作为参数 ;
- IS-A 类关系 : 类的继承 , 接口实现 ;
- 泛化关系 Generalization : 一般描述 和 具体描述 之间的关系 , 继承中的 父类 和 子类 就是这种关系 ;
- 实现关系 Realization : 接口实现中的 接口 和 实现类 的关系 ;
本篇博客开始 讲解 IS-A 类关系 中的 继承关系 ( 泛化关系 Generalization ) ;
二、继承概念
1、名词说明
继承 是两个类之间的关系 ;
在C 中,使用 :
运算符来实现继承 ;
A 类 是 父类 , B 类 是 子类 ; B 类 继承 A 类 , A 类 派生 B 类 ;
- 父类 又称为 基类 ;
- 子类 又称为 派生类 ;
2、单继承与多继承
单继承 与 多继承 :
- A 类 只有一个 子类 B 类 , 那么 该继承 就是 单继承 ;
- A 类 有多个子类 B1 类 , B2 类 … , 该 继承 是 多继承 ;
单继承
单继承是指一个类只能继承一个父类的特性和行为 ;
下面的代码中 , Child 类继承了 Parent 类的所有公有和保护成员 , 并且可以访问它们 ;
- 注意 : Child 类不能继承 Parent 类的私有成员 ;
class Parent {
// 父类成员
};
class Child : public Parent {
// 子类成员
};
多继承
多继承是指一个类可以继承多个父类的特性和行为 ;
下面的代码中 , Child 类继承了 Parent1 和 Parent2 类的所有 公有 和 保护 成员 , 并且可以访问它们 ;
- 注意 : Child 类不能继承 Parent1 和 Parent2 类的 私有成员 ;
class Parent1 {
// 父类1成员
};
class Parent2 {
// 父类2成员
};
class Child : public Parent1, public Parent2 {
// 子类成员
};
3、继承关系特性
继承关系示例 : 人类 -> 学生 -> 男学生 ;
- 人类是 父类 , 学生 继承 人类 , 男学生 继承 学生 ;
继承关系有如下特性 :
- 传递性 : 三者都具有 人类 的特征 , 这是 继承关系 的 " 传递性 " ;
- 不对称性 : 不是 所有的 人类 都是 学生 , 不是所有的 学生 是 男学生 , 这是 继承关系 的 " 不对称性 " ;