1. 继承的概念及定义
1.1 继承的概念解析
面向对象编程中,继承是最强大的代码复用机制之一。它允许我们基于现有类创建新类,保留原有类的特性同时进行功能扩展。这种机制完美体现了"is-a"的关系,即派生类是基类的一种特殊形式。
让我们通过一个实际案例来理解这个概念。假设我们正在开发一个学校管理系统,系统中需要处理学生和教师两类人群。如果不使用继承,代码可能会是这样:
cpp复制class Student {
public:
string name;
string address;
int age;
string stuid;
// 学生特有方法...
};
class Teacher {
public:
string name;
string address;
int age;
string title;
// 教师特有方法...
};
这种写法存在明显的代码冗余。通过继承,我们可以将共有的属性和方法提取到基类Person中:
cpp复制class Person {
protected:
string _name;
string _address;
int _age;
};
class Student : public Person {
protected:
string _stuid;
};
class Teacher : public Person {
protected:
string _title;
};
注意:在实际开发中,我们通常会在成员变量名前加下划线""或前缀"m"来区分成员变量和局部变量,这是一种常见的命名约定。
继承带来的主要优势包括:
- 代码复用:避免重复编写相同的代码
- 可维护性:修改公共属性只需在基类中修改一次
- 扩展性:可以方便地添加新的派生类
- 多态基础:为运行时多态提供了可能
1.2 继承的定义详解
C++中继承的基本语法格式为:
cpp复制class 派生类名 : 继承方式 基类名 {
// 派生类新增成员
};
继承方式有三种:public、protected和private,它们决定了基类成员在派生类中的访问权限:
-
public继承:
- 基类public成员 → 派生类public成员
- 基类protected成员 → 派生类protected成员
- 基类private成员 → 不可直接访问
-
protected继承:
- 基类public/protected成员 → 派生类protected成员
- 基类private成员 → 不可直接访问
-
private继承:
- 基类public/protected成员 → 派生类private成员
- 基类private成员 → 不可直接访问
实际开发中最常用的是public继承,因
