面向对象 继承与派生
一、概述:类和类最重要的两种关系:组合关系(is part of);泛化关系(is kind of,启发代码重用)。
泛化关系表示事物在垂直方向上的一种分类,从一个抽象类型细分出多个具体类型,并且可以继续细分下去,最终形成泛化树。泛化树中的上层结点称为父类(基类),父类的下层结点称为子类(派生类)。父类派生出子类,子类继承了父类。
// A 类派生与 B 类、可用公有继承、保护继承、私有继承等,可单一继承、多重继承。多重继承的基类列表中包含多个基类,用逗号隔开。
//不管何种继承,派生类占据的内存都大于父类,包括那些父类私有的都会被派生出来浪费空间,所以要慎用派生继承。 class A : public B { ...//派生类新增数据成员及成员函数 };
不适合使用继承关系的情况:
1,与分类学尝试矛盾
2,所研究问题不需要的分类
3,只有一个属性不同的分类(eg:本科生与研究生,中国人和外国人等)
注意:封装性要求私有成员只有对象本身可以访问;构造函数和析构函数都是每个类所特有的,不能被继承;
不同继承方式的访问属性: