本课程件主要讲解了C++中的继承和派生概念,以及如何从一个基类派生出新的类。通过实例展示了如何定义基类和派生类,并介绍了继承的三种方式:公有继承(public)、私有继承(private)和保护继承(protected)。
在面向对象编程中,继承是一种核心特性,它允许我们创建新的类,这些类不仅具有原有的类(基类)的特性,还可以添加新的功能。继承的主要优点在于代码重用和扩展,使得软件的维护和升级更为高效。
C++中的继承语法如下所示:
```cpp
class DerivedClassName: AccessSpecifier BaseClassName {
// 私有成员
private:
...;
// 公有成员
public:
...;
// 保护成员
protected:
...;
};
```
在这个结构中,`DerivedClassName` 是派生类的名称,`BaseClassName` 是基类的名称,`AccessSpecifier` 是继承方式,可以是 `public`、`private` 或 `protected`。
1. **公有继承 (public)**: 派生类可以访问基类的所有公有和保护成员。这意味着在派生类中,基类的公有成员仍然保持公有,保护成员保持保护。外部代码可以通过派生类的对象来访问这些成员。
2. **私有继承 (private)**: 基类的公有和保护成员在派生类中都变为私有,外部代码不能直接访问这些成员,即使通过派生类的对象也不行。私有继承通常用于实现“is-a”关系,但不希望外部代码直接操作基类的成员。
3. **保护继承 (protected)**: 这种方式下,基类的公有成员变为保护成员,只有派生类可以访问。这限制了外部代码对基类成员的直接访问,同时允许派生类进行必要的内部操作。
例如,有一个简单的`Student`类,包含学生的基本信息如学号、姓名和性别。为了扩展这个类,添加年龄和地址信息,我们可以创建一个新的派生类`Student1`。`Student1`不仅包含`Student`类的所有属性,还增加了`age`和`address`字段,以及一个新的成员函数`display_1()`来展示这些新增的成员。
```cpp
class Student {
// ...
};
class Student1 : public Student {
private:
int age;
string addr;
public:
void display_1() {
// ...
}
};
```
在这个例子中,`Student`是基类,`Student1`是派生类,通过`public`关键字表明`Student`的公有成员在`Student1`中仍然是公有的。
继承的概念可以用类图来表示,例如类A作为基类,类B作为派生类,类B在图形上会位于类A的下方,表示类B继承了类A的所有特性,并可能添加了自己的特性。
C++中的继承和派生是面向对象编程的重要组成部分,它提供了构建复杂软件体系结构的手段,通过复用和扩展已有类的功能,提高了代码的组织性和可维护性。正确理解和应用继承,可以使我们的代码更加模块化,降低系统复杂性,提高软件质量。