Solidity 中的多态

2025 年 6 月 2 日 | 阅读时长:3 分钟

术语 **'多态性'** 定义为以两种或更多形式处理数据的能力。与其他所有编程语言不同,多态性的概念在 Solidity 中也以相同的方式应用。Solidity 支持两种多态性,如下所示:

  1. 函数多态性
  2. 合约多态性

本教程将简要介绍 Solidity 中关于多态性的详细信息、其类型、定义以及它们在 Solidity 中的实时示例。

让我们开始吧。

函数多态性

函数多态性的另一个名称是方法重载。函数多态性的概念围绕着在同一合约或子合约中声明多个具有相同函数名称的函数,而这些函数在参数数据类型或使用的参数数量上存在差异。在 Solidity 中,函数的声明不能被重载,并且仅在返回类型上有所不同。

示例: 在下面的程序中,我们创建了一个名为 `functionPolymorphismExample` 的合约,该合约声明了两个具有相同名称 `getVal` 的函数,但这两个函数都包含不同的参数列表,以演示方法重载的概念。

输出

Polymorphism in Solidity

示例

合约 `functionPolymorphismExample` 声明了两个具有相同名称 `getVal` 的函数,但这两个函数都包含不同的参数列表,以演示方法重载的概念。将调用参数与上述输出相同的函数。

合约多态性

合约多态性的概念通过使用多个合约实例相互交换来实现,当它们通过继承相互关联时。这有助于使用父合约的实例调用子合约函数。

示例: 在下面的程序中,我们创建了一个名为 `functionPolymorphismExample` 的合约,它由子合约 `child` 派生而来,以展示合约多态性的概念。`ContractPolymorphism` 是驱动程序合约。

输出

Polymorphism in Solidity

说明

合约 `parentClass` 声明了许多具有相同名称 `getVal` 的函数,但这两个函数都包含不同的参数列表,以演示方法重载的概念。与此相关的问题是,在运行时将仅调用参数与上述输出相同的函数。借助于引用类型,两个不同的变量可以引用同一位置,其中一个变量的任何更改都可能影响另一个变量。

结论

Solidity 是一种静态类型语言,这意味着每个变量的类型都应该被指定。我们已经介绍了关于多态性及其类型的所有详细信息,并提供了详细的示例。您可以在您的示例中使用它们并尝试一下。