我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

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

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

这篇文章主要讲解了“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

  • external:外部函数是智能合约接口的一部分,这意味着可以从其他合约和交易中调用它们。external函数f不能在内部调用(即f()不起作用,但this.f()起作用)。当外部函数接收大量数据时,它们有时会更有效。

  • public:公共函数是智能合约接口的一部分,可以在内部调用,也可以通过消息调用。对于公共状态变量,会生成自动getter函数(见下文)。

  • internal:这些函数和状态变量只能在内部访问(即从当前合约或从中派生的合约中),而其他情况不使用它。

  • private:私有函数和状态变量仅对定义它们的智能合约可见,而不是在派生合约中可见。

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

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

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

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

Python的继承怎么使用

本篇内容介绍了“Python的继承怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!面向对象三大特性:封装 根据 职责 将 属性 和 方
2023-06-22

Go语言使用组合的思想实现继承

这篇文章主要为大家详细介绍了在Go里面如何使用组合的思想实现“继承”,文中的示例代码讲解详细,对我们学习Go语言有一定的帮助,需要的可以了解一下
2022-12-16

怎么封装使用Go语言开发的redis

本篇内容主要讲解“怎么封装使用Go语言开发的redis”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么封装使用Go语言开发的redis”吧!go redis 集合操作--saddredis的g
2023-06-25

python中的继承和多态怎么用

本篇内容介绍了“python中的继承和多态怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、继承的介绍继承是一种创建新的类的方式,新创
2023-06-28

python子类在多继承中怎么使用MRO

本篇内容主要讲解“python子类在多继承中怎么使用MRO”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python子类在多继承中怎么使用MRO”吧!子类在多继承中使用MRO机制在Python中
2023-07-05

redis是使用c语言开发的么

redis 以 c 语言开发,主要好处包括:高性能,执行速度快。内存效率高,直接管理内存。可移植性强,支持多种操作系统和平台。可扩展性好,支持多线程和异步编程。Redis 是使用 C 语言开发的Redis 是一款开源的、内存中的、键值对数
redis是使用c语言开发的么
2024-04-19

C++11继承的构造函数怎么使用

本篇内容主要讲解“C++11继承的构造函数怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++11继承的构造函数怎么使用”吧!多重继承的情况上述方法在多重继承时仍然有效,除了一种情况:被
2023-06-19

使用java怎么在接口中继承静态方法

本篇文章给大家分享的是有关使用java怎么在接口中继承静态方法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Java有哪些集合类Java中的集合主要分为四类:1、List列表:
2023-06-14

pycharm用什么语言开发的

pycharm 是用什么语言开发的?PyCharm 是一款由 JetBrains 开发的集成开发环境 (IDE),主要用于 Python 编程语言。因此,PyCharm 本身是用 Python 编写的。JetBrains 是一家专门开发
pycharm用什么语言开发的
2024-04-04

nlp是用什么语言开发的

NLP(自然语言处理)可以用多种编程语言进行开发。以下是一些常用的编程语言:1. Python:Python是最常用的开发NLP的编程语言,因为它有丰富的NLP库和工具,如NLTK、spaCy、Gensim等。2. Java:Java是另一
2023-10-08

c语言是用什么开发的

C语言是用C语言开发的。C语言是一种高级编程语言,可以通过编译器将C语言代码转换成机器可执行的二进制文件。常见的C语言编译器有GCC(GNU Compiler Collection)、Clang等。这些编译器将C语言代码转换成目标机器的机器
2023-09-22

Go语言的开发工具如何使用

这篇文章主要讲解了“Go语言的开发工具如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Go语言的开发工具如何使用”吧!json-to-go输入:[ { "input
2023-07-02

PHP扩展开发:如何使用抽象类实现自定义函数的继承?

在 php 扩展中,使用抽象类实现自定义函数继承的方法如下:定义抽象类,指定函数签名和文档;创建子类实现具体函数;在扩展模块注册自定义函数;创建子类支持不同的转换;注册自定义函数供 php 代码调用。在 PHP 扩展中使用抽象类实现自定义函
PHP扩展开发:如何使用抽象类实现自定义函数的继承?
2024-05-15

使用Go语言开发高效的并发编程应用

使用Go语言开发高效的并发编程应用随着互联网的快速发展和计算机性能的不断提升,人们对于软件系统的要求也越来越高。尤其是在网络应用开发中,高并发处理成为了一项重要的技术挑战。而Go语言作为一门强调并发编程的语言,逐渐成为了开发高效并发应用的首
使用Go语言开发高效的并发编程应用
2023-11-20

利用Kotlin语言怎么进行Android开发

这期内容当中小编将会给大家带来有关利用Kotlin语言怎么进行Android开发,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Kotlin是一门基于JVM的编程语言,它正成长为Android开发中用于替代
2023-05-31

使用Go语言开发高并发的网络爬虫

使用Go语言开发高并发的网络爬虫随着互联网的迅速发展,信息量呈爆炸式增长。为了获取海量的数据,网络爬虫成为了一种重要的工具。而在开发网络爬虫时,高并发的处理能力往往是一个关键的需求。本文将介绍如何使用Go语言开发一款高并发的网络爬虫。Go语
使用Go语言开发高并发的网络爬虫
2023-11-20

C语言中的assert怎么使用

在C语言中,`assert`是一个宏,用于在程序中插入断言语句,用于检查程序中的特定条件是否满足。如果断言条件为真,则程序继续执行;如果断言条件为假,则程序终止,并显示错误消息。`assert`的使用方法如下:1. 首先,包含``头文件。`
2023-08-12

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录