21xrx.com
2024-11-05 20:45:14 Tuesday
登录
文章检索 我的文章 写文章
C++中的封装、继承和多态概念解析
2023-07-08 05:56:19 深夜i     --     --
C++ 封装 继承 多态 概念解析

C++是一门集成了多种编程方法的面向对象编程语言,其中封装、继承和多态是其基本概念。

封装

封装是面向对象编程的一个重要概念,其主要原则是将数据和方法包装在一个单元内,对外部隐藏真正的数据和实现细节,只对外部公开接口。在C++中,封装通常使用类来实现。

对于封装来说,最重要的就是保护数据的安全,避免外界直接访问数据,导致不符合预期的结果。

例如,下面是一个封装示例:


// 声明一个类

class Rectangle

{

public:

  void setLength(double len);

  void setWidth(double wid);

  double area();

private:

  double length;

  double width;

};

// 实现类中的方法

void Rectangle::setLength(double len)

  length = len;

void Rectangle::setWidth(double wid)

  width = wid;

double Rectangle::area()

{

  return length * width;

}

在这个示例中,类把变量`length`和`width`封装在了成员变量中,提供了一个对外的公共方法`area()`来获取矩形的面积。而输入`length`和`width`的方法,则只能在类的内部被调用,避免了对变量的直接访问,从而提高了程序的安全性和可维护性。

继承

继承是一种重复利用类的方法,它使得一个新的类可以继承旧类的变量和方法。在C++中,这样的新旧类关系叫做父类和子类,其中子类是从父类继承而来的。

继承的优点是:节约编程时间、更好的代码重用性,加速代码编写速度和改进构建簇的灵活性。

例如,下面给出一个继承示例:


//声明一个父类

class Shape

{

public:

  // 获取面积的方法

  virtual double getArea() = 0;

};

//声明一个子类

class Circle : public Shape

{

public:

  double getArea();

private:

  double radius;

};

// 实现子类的方法

double Circle::getArea()

{

  return 3.14 * radius * radius;

}

上例中,Shape是一个基类,它既可以是抽象类,也可以是普通类。而Circle是一个子类,它从Shape中继承了getArea()方法,并在自己的类中重新定义实现。这样做的好处是,在需要计算面积的时候,可以直接调用Circle的getArea()方法,从而简化了代码的编写。

多态

多态是面向对象编程中的一个重要特性,它允许使用相同的方法名在不同的类中实现不同的行为。多态主要分为静态多态和动态多态。

静态多态:是编译时的多态,例如重载、模板等;

动态多态:是运行时的多态,它与虚函数、纯虚函数等有关。

例如,下面给出一个多态示例:


//声明一个基类

class Animal

{

public:

  virtual void makeSound() = 0;

};

// 声明一个子类

class Cat : public Animal

{

public:

  void makeSound()

  

    cout << "喵喵喵!" << endl;

  

};

// 声明另一个子类

class Dog : public Animal

{

public:

  void makeSound()

  

    cout << "汪汪汪!" << endl;

  

};

//main()函数中的使用示例

int main()

{

  Animal* ap;

  Cat c;

  Dog d;

  ap = &c;

  ap->makeSound();

  ap = &d;

  ap->makeSound();

  return 0;

}

上例中,Animal是基类,Cat和Dog是它的两个派生类。在新的main()函数中,通过使用基类指针ap,再将其指向不同的子类对象,显示其多态的效果。通过多态,子类对象方法makeSound()分别被调用,输出不同的结果。

综上,C++中的封装、继承和多态是三个基本特性,熟练掌握它们有助于减少代码量,提高代码重用率和维护性,实现更优秀的编程设计。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复