文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

olidity语言开发中的继承怎么使用

2023-06-02 18:42

关注

这篇文章主要讲解了“olidity语言开发中的继承怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“olidity语言开发中的继承怎么使用”吧!

在Solidity中,继承与经典的面向对象编程语言非常相似。你首先编写基本智能合约并告知你的新智能合约将从基础合约继承。

你还必须通过复制包含多态的代码来了解Solidity支持多重继承。所有函数调用都是虚函数,这意味着会是调用派生函数最多的函数,除非明确给出了合约名称。当某一个智能合约从多个合约继承时,只在区块链上创建一个智能合约,并将所有基础合约中的代码复制到创建的智能合约中。

让我们写下我们的基本智能合约:它将让我们轻松地为我们的合约添加所有权。我们将其命名为Ownable。OpenZeppelin的员工写了很多可以在智能合约中使用的可重用代码。这些代码段可通过其工具或其Github存储库获得。

这是代码:

pragma solidity ^0.4.11;contract Ownable {  address public owner;    function Ownable() {    owner = msg.sender;  }    modifier onlyOwner() {    require(msg.sender == owner);    _;  }    function transferOwnership(address newOwner) onlyOwner {    require(newOwner != address(0));          owner = newOwner;  }}

我们经常写的另一种模式是破坏我们的合约并将合约中存储的资金转移给所有者或另一个地址的能力。重要的是我们不希望任何人能够破坏我们的合约,所以我们的Destructible应该继承Ownable。继承是使用智能合约名称后面的is关键字完成的。

必须注意,它是Solidity,默认情况下是函数,或者可以从派生类访问。与其他编程语言一样,你可以指定从外部或派生合约中可以访问的内容。函数可以指定为externalpublicinternalprivate,默认为public

下面是我们的第二份智能合约:

pragma solidity ^0.4.11;contract Destructible is Ownable {  function Destructible() payable { }     function destroy() onlyOwner {    selfdestruct(owner);  }  function destroyAndSend(address _recipient) onlyOwner {    selfdestruct(_recipient);  }}

现在使用这两个基本合约,我们将写一个简单的BankAccount智能合约,人们可以汇款,业主可以提取。

pragma solidity ^0.4.11;contract BankAccount is Ownable, Destructible {  function store() public payable {        }   function withdraw(uint amount) public onlyOwner {      if (this.balance >= amount) {        msg.sender.transfer(amount);      }  } }

请注意,我们需要从两个智能合约继承。继承的顺序很重要。判断顺序的一个简单规则是按照“最类似基类”到“最多派生”的顺序指定基类。

以下是我们将部署的整个代码:

pragma solidity ^0.4.11;contract Ownable {  address public owner;    function Ownable() {    owner = msg.sender;  }    modifier onlyOwner() {    require(msg.sender == owner);    _;  }    function transferOwnership(address newOwner) onlyOwner {    require(newOwner != address(0));          owner = newOwner;  }}contract Destructible is Ownable {  function Destructible() payable { }     function destroy() onlyOwner {    selfdestruct(owner);  }  function destroyAndSend(address _recipient) onlyOwner {    selfdestruct(_recipient);  }}contract BankAccount is Ownable, Destructible {  function store() public payable {        }   function withdraw(uint amount) public onlyOwner {      if (this.balance >= amount) {        msg.sender.transfer(amount);      }  } }

我们现在可以部署我们的银行账户bank account智能合约了。

感谢各位的阅读,以上就是“olidity语言开发中的继承怎么使用”的内容了,经过本文的学习后,相信大家对olidity语言开发中的继承怎么使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯