Menu
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

C++ 教程

C++ 主页 C++ 简介 C++ 入门 C++ 语法 C++ 输出 C++ 注释 C++ 变量 C++ 用户输入 C++ 数据类型 C++ 运算符 C++ 字符串 C++ 数学 C++ 布尔值 C++ if...Else C++ Switch C++ While 循环 C++ For 循环 C++ Break/Continue C++ 数组 C++ 结构体 C++ 枚举 C++ 引用 C++ 指针

C++ 函数

C++ 函数 C++ 函数参数 C++ 函数重载 C++ 作用域 C++ 递归

C++ 类

C++ 面向对象编程 C++ 类/对象 C++ 类方法 C++ 构造函数 C++ 访问修饰符 C++ 封装 C++ 继承 C++ 多态 C++ 文件 C++ 异常 C++ 日期

C++ 数据结构

C++ 数据结构 & STL C++ 向量 C++ 列表 C++ 堆栈 C++ 队列 C++ 双端队列 C++ 集合 C++ 映射 C++ 迭代器 C++ 算法

C++ 如何做

C++ 加两个数字 C++ 随机数

C++ 参考

C++ 参考 C++ 关键字 C++ <iostream> C++ <fstream> C++ <cmath> C++ <string> C++ <cstring> C++ <ctime> C++ <vector> C++ <algorithm>

C++ 例子

C++ 例子 C++ 现实生活中的例子 C++ 编译器 C++ 练习 C++ 问答 C++ 证书


C++ 多态


多态

多态的意思是“多种形式”,当我们拥有通过继承相互关联的多个类时,就会发生多态。

正如我们在上一章中所述;继承 允许我们从另一个类继承属性和方法。多态 使用这些方法来执行不同的任务。这使我们能够以不同的方式执行单个操作。

例如,假设有一个名为 Animal 的基类,它有一个名为 animalSound() 的方法。动物的派生类可以是猪、猫、狗、鸟——它们也都有自己实现的动物声音(猪会哼哼,猫会喵喵叫,等等)。

示例

// 基类
class Animal {
  public
    void animalSound() {
      cout << "动物发出声音 \n";
    }
};

// 派生类
class Pig : public Animal {
  public
    void animalSound() {
      cout << "猪说:wee wee \n";
    }
};

// 派生类
class Dog : public Animal {
  public
    void animalSound() {
      cout << "狗说:bow wow \n";
    }
};

请记住,从 继承章节 中我们使用 : 符号来继承一个类。

现在我们可以创建 Pig Dog 对象并重写 animalSound() 方法

示例

// 基类
class Animal {
  public
    void animalSound() {
      cout << "动物发出声音 \n";
    }
};

// 派生类
class Pig : public Animal {
  public
    void animalSound() {
      cout << "猪说:wee wee \n";
    }
};

// 派生类
class Dog : public Animal {
  public
    void animalSound() {
      cout << "狗说:bow wow \n";
    }
};

int main() {
  Animal myAnimal;
  Pig myPig;
  Dog myDog;

  myAnimal.animalSound();
  myPig.animalSound();
  myDog.animalSound();
  return 0;
}
自己试一试 »

为什么要使用“继承”和“多态”?什么时候使用它们?

- 它有助于代码复用:在创建新类时复用现有类的属性和方法。


×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.