当前位置:实例文章 » HTML/CSS实例» [文章]C++ 的面向对象三个特性 --继承、封装、多态的实现 ===》编译时多态

C++ 的面向对象三个特性 --继承、封装、多态的实现 ===》编译时多态

发布人:shili8 发布时间:2025-01-07 17:14 阅读次数:0

**C++ 面向对象三大特性:继承、封装、多态**

在面向对象编程中,继承、封装和多态是三个基本的特性,它们使得程序设计更加高效、易于维护和扩展。下面我们将分别讨论这些特性的实现,以及它们如何应用到 C++ 中。

###1. 继承继承是一种特殊的关系,一个类(子类)可以从另一个类(父类)继承属性和方法。这样,可以避免重复编写相同的代码,并且使得程序设计更加高效。

**示例:**

cpp// 父类class Animal {
public:
 void eat() { std::cout << "Eating..." << std::endl; }
};

// 子类class Dog : public Animal {
public:
 void bark() { std::cout << "Barking..." << std::endl; }
};


在上面的示例中,`Dog` 类继承了 `Animal` 类的 `eat()` 方法,可以直接使用。

###2. 封装封装是指将数据和方法包裹在一个类中,使得外部无法直接访问内部数据。这样可以保护数据不被意外修改,并且使得程序设计更加安全。

**示例:**

cpp// 类class BankAccount {
private:
 double balance;

public:
 void deposit(double amount) { balance += amount; }
 void withdraw(double amount) { if (balance >= amount) balance -= amount; }

 double getBalance() const { return balance; }
};


在上面的示例中,`BankAccount` 类的 `balance` 数据是私有的,只能通过 `deposit()` 和 `withdraw()` 方法进行操作。

###3. 多态多态是指一个类可以有多个不同的行为,这取决于具体的实现。这样可以使得程序设计更加灵活和高效。

**示例:**

cpp// 基类class Shape {
public:
 virtual void draw() =0; // pure virtual function};

// 子类class Circle : public Shape {
public:
 void draw() override { std::cout << "Drawing a circle..." << std::endl; }
};

// 子类class Rectangle : public Shape {
public:
 void draw() override { std::cout << "Drawing a rectangle..." << std::endl; }
};


在上面的示例中,`Shape` 类是一个基类,它有一个纯虚函数 `draw()`。`Circle` 和 `Rectangle` 是两个子类,它们分别实现了 `draw()` 函数。

**编译时多态**

C++ 中的多态是通过虚函数实现的,而虚函数在编译时就确定了其类型,这被称为编译时多态。

cpp// 基类class Shape {
public:
 virtual void draw() { std::cout << "Drawing a shape..." << std::endl; }
};

// 子类class Circle : public Shape {
public:
 void draw() override { std::cout << "Drawing a circle..." << std::endl; }
};

int main() {
 Shape* shape = new Circle();
 shape->draw(); // 编译时多态 return0;
}


在上面的示例中,`shape` 指针指向一个 `Circle` 对象,但是由于 `draw()` 函数是虚函数,所以编译器会根据实际类型(即 `Circle`) 来确定调用哪个 `draw()` 函数。

**总结**

继承、封装和多态是 C++ 面向对象三大特性,它们使得程序设计更加高效、易于维护和扩展。通过虚函数实现的编译时多态,使得程序设计更加灵活和高效。

其他信息

其他资源

Top