📜  C ++ |继承|问题7(1)

📅  最后修改于: 2023-12-03 14:59:36.895000             🧑  作者: Mango

C++ | 继承 | 问题7

在面向对象编程中,继承允许我们基于现有的类来创建新的类。新的类称为派生类,而现有的类称为基类。派生类继承了基类的成员和方法,并可以添加自己的成员和方法。在C++中继承是通过“冒号”来实现的,如下所示:

class Derived_class_name : access_mode Base_class_name

这里,“Derived_class_name”是新类的名字,“access_mode”指定了成员的访问级别,“Base_class_name”是现有类的名字。访问级别可以是public、protected或private,它们定义了派生类成员访问基类成员的方式。这里有一些关于访问级别的规则:

  • 派生类中的public成员可以访问基类中的public成员和protected成员。
  • 派生类中的protected成员可以访问基类中的public成员和protected成员。
  • 派生类中的private成员不能访问基类中的任何成员。

以下是一个简单的示例,使用继承创建了一个新类:

// Base class
class Shape {
   public:
      void setWidth(int w) {
         width = w;
      }
      void setHeight(int h) {
         height = h;
      }

   protected:
      int width;
      int height;
};

// Derived class
class Rectangle: public Shape {
   public:
      int getArea() {
         return (width * height);
      }
};

在这个示例中,派生类Rectangle继承了基类Shape的成员和方法,并添加了一个新方法getArea()getArea()方法使用了基类成员widthheight来计算矩形的面积。注意,setWidth()setHeight()方法是基类的公共成员,而widthheight是基类的受保护成员。派生类Rectangle可以访问它们,因为它们都是保护级别。

现在我们可以创建Rectangle类的对象,并调用它的方法:

Rectangle Rect;
Rect.setWidth(5);
Rect.setHeight(7);
int area = Rect.getArea();

这将创建一个Rect对象,宽度为5,高度为7,然后调用getArea()方法来计算面积。getArea()方法使用了继承自基类的widthheight成员,然后返回计算出的面积。

继承是面向对象编程的核心之一,它使代码更加模块化和可维护。在使用继承时,请记得谨慎考虑访问级别和派生类的设计,以避免意外的问题。