我的合约可以继承以太坊合约吗?

问题描述 投票:0回答:2

是否可以继承以太坊合约本身并为其添加一些功能?

我只是想知道是否可以这样做以及如何做?

inheritance ethereum solidity smartcontracts
2个回答
0
投票

继承是面向对象编程语言最重要的特性之一,

Solidity
支持
smart contracts

之间的继承

有一个基础合约,它是包含可以传递给其他合约的代码的主类。这也称为parent合约。其他合约均源自基础合约,称为 child 合约。孩子从父母那里继承,父母可以有多个孩子。

父级包含函数以及子级可以继承和使用的方法和例程。当一个合约继承另一个合约时,它被称为

single inheritance
。在许多情况下,一个孩子也有可能继承多个父母的遗产,这称为
multiple inheritance

这里是使用合约A合约B

的单继承示例代码
// Single Inheritance

pragma solidity 0.8.7;
contract A {
    function foo() public pure virtual returns (string memory) {
           return "Foo Contract A";
    }

    function bar() public pure returns (string memory) {
          return "Bar Contract A";
    }
contract B is A {
    function foo() public pure override returns (string memory) {
         return "Foo Contract B";
    }
}

合约 B 继承自 合约 A。为了允许继承,在合约语句中添加了 is 关键字。这意味着:

contract B is A {}

在子 合约 B 中,我们有一个也称为 foo() 的函数。如果我们想绕过 A 的值怎么办?您必须使用 override 关键字。

为此,您必须在 A 中声明 B 将使用关键字 virtual 继承的函数。这允许 B 为 foo() 设置自己的值,这与 A 不同。B 可以返回值“

Foo Contract B
”而不是“
Foo Contract A
”。


0
投票

是否可以继承以太坊合约本身并为其添加一些功能?

不,因为这没有意义。

© www.soinside.com 2019 - 2024. All rights reserved.