1. 类的继承基础概念解析
在C++面向对象编程中,继承是最能体现代码复用特性的机制之一。郑莉老师在第七章中系统性地讲解了这一核心概念,我将结合自己十余年代码实践中的理解,带大家深入掌握这个看似简单实则暗藏玄机的特性。
继承的本质是派生类(子类)对基类(父类)的扩展和特化。就像生物学中的遗传规律,子代会继承父代的特征,同时发展出自己的独特性。在代码层面,这表现为:
cpp复制class Employee { // 基类
protected:
string name;
int age;
public:
void printInfo() { /*...*/ }
};
class BankTeller : public Employee { // 派生类
private:
int counterNumber;
public:
void serveCustomer() { /*...*/ }
};
这里BankTeller(银行柜员)继承了Employee(员工)的所有属性和方法,同时增加了counterNumber(柜台编号)属性和serveCustomer()方法。这种关系在UML中表现为空心三角形箭头的关联线。
关键理解:继承不是简单的代码复制,而是建立了严格的is-a关系。这意味着所有对基类的操作都应当适用于派生类对象,这是里氏替换原则的核心要义。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 继承方式深度剖析
2.1 三种继承方式对比
C++提供了public、protected和private三种继承方式,它们决定了基类成员在派生类中的可见性:
| 继承方式 | 基类public成员 | 基类protected成员 | 基类private成员 |
|---|---|---|---|
| public | public | protected | 不可访问 |
| protected | protected | protected | 不可访问 |
| private | private | private |
