模块 6 · 第 1 课(共 2)课程中的13/18~12 min
模块课程(1/2)
C++ 中的继承
继承是面向对象编程(OOP)的关键支柱之一。它允许新类(称为派生类或子类)从现有类(称为基类或父类)继承成员(属性和方法),从而促进代码重用。
基本语法
在 C++ 中,继承是使用派生类名称后面的 : 运算符指定的,后跟访问说明符(通常是 public)和基类名称。
C++
class Shape {
public:
void setColor(std::string c) {
color = c;
}
protected:
std::string color; // Accessible by derived classes
};
// Rectangle inherits publicly from Shape
class Rectangle : public Shape {
public:
double getArea() {
return width * height;
}
private:
double width {0.0};
double height {0.0};
};访问说明符:protected
除了 public 和 private 之外,继承还引入了 protected 说明符:
- 不能从派生类直接访问基类的
private成员。 - 基类的
protected成员无法从外部访问,但可以在派生类内部直接访问。
基类初始化
构造函数不会自动继承。实例化派生类时,首先调用基类构造函数。如果基类需要参数,我们必须在派生构造函数的成员初始值设定项列表中显式调用它。
C++
class Parent {
public:
Parent(int x) {
std::cout << "Parent: " << x << std::endl;
}
};
class Child : public Parent {
public:
// Explicit call to Parent constructor
Child(int x, int y) : Parent(x) {
std::cout << "Child: " << y << std::endl;
}
};自己尝试一下
锻炼#cpp.m6.l1.e1
尝试:0加载中...
创建一个公共继承自 Animal 类的 Dog 类。 Dog 类必须包含一个公共 play() 方法,该方法使用 std::cout 打印“Playing”。
正在加载编辑器...
显示提示
使用 `:` 语法后跟 `public Animal` 来扩展基类,然后编写 `play()` 方法。
3 次尝试后可用的解决方案
锻炼#cpp.m6.l1.e2
尝试:0加载中...
通过继承 Vehicle 来完成 Car 类。为 Car 编写一个构造函数,它接受 std::string b 并通过成员初始值设定项列表将其传递给 Vehicle 构造函数。
正在加载编辑器...
显示提示
在 `Car` 构造函数中,紧跟在参数括号后面使用语法 `: Vehicle(b)` 将品牌的初始化委托给基类。
3 次尝试后可用的解决方案