1.模块拓展(继承与派生)的理解和语法关联理解代码实现与运行截图用C++实现
时间: 2024-01-22 10:18:52 浏览: 23
模块拓展是指在一个已有的模块基础上,通过继承或派生的方式扩展出新的模块,从而实现代码的复用和扩展性的增强。在C++中,继承和派生是实现模块拓展的两种方式。
继承是指一个类可以基于另一个类派生出新的类,新的类在继承的基础上可以添加新的成员变量和成员函数,也可以重写基类的成员函数。继承的语法如下:
```c++
class 基类名
{
// 基类的成员变量和成员函数定义
};
class 派生类名: 访问修饰符 基类名
{
// 派生类的成员变量和成员函数定义
};
```
其中访问修饰符可以是public、protected或private,用来指定派生类对基类成员的访问权限。
派生是指在一个已有的类基础上,添加新的成员变量和成员函数,从而形成新的类。派生的语法如下:
```c++
class 原类名
{
// 原类的成员变量和成员函数定义
};
class 新类名 : 访问修饰符 原类名
{
// 新类的成员变量和成员函数定义
};
```
其中访问修饰符可以是public、protected或private,用来指定新类对原类成员的访问权限。
下面是一个使用继承和派生实现模块拓展的示例代码:
```c++
#include <iostream>
using namespace std;
// 基类
class Shape
{
public:
virtual float getArea() = 0; // 纯虚函数,需要子类实现
};
// 派生类1
class Rectangle : public Shape
{
public:
Rectangle(float w, float h) : width(w), height(h) {}
float getArea() { return width * height; }
private:
float width;
float height;
};
// 派生类2
class Circle : public Shape
{
public:
Circle(float r) : radius(r) {}
float getArea() { return 3.14 * radius * radius; }
private:
float radius;
};
int main()
{
Shape* shape1 = new Rectangle(4, 5);
Shape* shape2 = new Circle(3);
cout << "Rectangle area: " << shape1->getArea() << endl;
cout << "Circle area: " << shape2->getArea() << endl;
delete shape1;
delete shape2;
return 0;
}
```
运行结果如下:
```
Rectangle area: 20
Circle area: 28.26
```
可以看到,通过继承和派生的方式,我们可以扩展出不同的图形类,并且在使用时可以通过基类指针来调用不同的子类方法。