在面向对象编程中,基类(基类)通常用于定义一组通用的属性和方法,而派生类(继承类)则继承这些属性和方法,并根据需要进行扩展或覆盖。
以下是一个简单的示例,使用C++语言来定义Point
基类和Rectangle
继承类:
#include <iostream>
#include <cmath>
// 基类 Point 定义二维空间中的一个点
class Point {
protected:
double x;
double y;
public:
Point() : x(0), y(0) {} // 默认构造函数
Point(double x, double y) : x(x), y(y) {} // 带参数的构造函数
// 设置点的坐标
void setCoordinates(double newX, double newY) {
x = newX;
y = newY;
}
// 获取点的坐标
void getCoordinates(double &outX, double &outY) const {
outX = x;
outY = y;
}
};
// 继承类 Rectangle 由两个对角线上的点确定一个矩形
class Rectangle : public Point {
private:
Point corner; // 矩形的另一个对角点
public:
// 构造函数,使用两个对角点初始化矩形
Rectangle(const Point& p1, const Point& p2)
: Point(p1), corner(p2) {}
// 设置矩形的对角点
void setDiagonalPoints(const Point& p1, const Point& p2) {
setCoordinates(p1.x, p1.y);
corner.setCoordinates(p2.x, p2.y);
}
// 计算矩形的高
double getHeight() const {
return std::abs(corner.y - y);
}
// 计算矩形的宽
double getWidth() const {
return std::abs(corner.x - x);
}
// 计算矩形的面积
double getArea() const {
return getWidth() * getHeight();
}
};
int main() {
// 示例:创建一个矩形对象并计算其高、宽和面积
Point p1(1, 1);
Point p2(4, 6);
Rectangle rect(p1, p2);
std::cout << "Height: " << rect.getHeight() << std::endl;
std::cout << "Width: " << rect.getWidth() << std::endl;
std::cout << "Area: " << rect.getArea() << std::endl;
return 0;
}
在这个示例中,Point
类有两个数据成员x
和y
,代表点在二维空间中的坐标。它提供了设置和获取坐标的方法。
Rectangle
类继承自Point
,并添加了第二个点corner
来表示矩形的对角点。它提供了计算矩形高度、宽度和面积的方法。getHeight
和getWidth
方法计算两个对角点之间的距离来确定矩形的高和宽,getArea
方法则通过乘以高和宽来计算面积。
请注意,这个示例假设矩形的对角线是垂直和水平的。如果对角线不是这样的方向,那么计算高和宽的方法需要相应地调整。