返回顶部
首页 > 资讯 > 精选 >olidity语言开发中的继承怎么使用
  • 674
分享到

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

2023-06-02 18:06:27 674人浏览 八月长安
摘要

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

这篇文章主要讲解了“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语言开发中的继承怎么使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: olidity语言开发中的继承怎么使用

本文链接: https://lsjlt.com/news/230973.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • olidity语言开发中的继承怎么使用
    这篇文章主要讲解了“olidity语言开发中的继承怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“olidity语言开发中的继承怎么使用”吧!在Solidity中,继承与经典的面向对象...
    99+
    2023-06-02
  • Python的继承怎么使用
    本篇内容介绍了“Python的继承怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!面向对象三大特性:封装 根据 职责 将 属性 和 方...
    99+
    2023-06-22
  • Go语言使用组合的思想实现继承
    目录前言类型嵌入结构体类型嵌入接口类型嵌入小结前言 Go 语言的设计之初,就不打算支持面向对象的编程特性,因此 Go 不支持面向对象的三大特性之一——继承。但...
    99+
    2022-12-16
    Go语言继承 Go 继承
  • 详解C++中单继承与多继承的使用
    目录前言1.继承的概念和定义(1)继承的概念(2)继承的定义方法(2)继承后子类的成员类型2.基类与派生类的赋值转换(1)派生类赋值给基类(2)基类给派生类3.继承中的作用域(1)隐...
    99+
    2024-04-02
  • 详解Java语言中的抽象类与继承
    目录一、实验目的二、实验要求三、实验报告要求四、实验小结一、实验目的 1、掌握抽象类的设计; 2、掌握抽象方法方法的实现; 3、熟悉类的向下向上转型,以及子类实例化父类对象的基本要求...
    99+
    2022-11-13
    Java抽象类 继承 Java抽象类 Java 继承
  • 分析HTML5开发中js的创建和继承
    这篇文章主要讲解了“分析HTML5开发中js的创建和继承”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“分析HTML5开发中js的创建和继承”吧!  当我们用...
    99+
    2024-04-02
  • go语言interface接口继承多态怎么定义
    本篇内容介绍了“go语言interface接口继承多态怎么定义”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.什么是接口接口就是一种规范与...
    99+
    2023-06-30
  • c++中的继承怎么写
    继承是一种允许类从现有类派生并访问其成员的强大机制。在 c++ 中,继承类型包括:单继承:一个子类从一个基类继承。多继承:一个子类从多个基类继承。层次继承:多个子类从同一个基类继承。多层...
    99+
    2024-05-14
    c++
  • python中的继承和多态怎么用
    本篇内容介绍了“python中的继承和多态怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、继承的介绍继承是一种创建新的类的方式,新创...
    99+
    2023-06-28
  • python子类在多继承中怎么使用MRO
    本篇内容主要讲解“python子类在多继承中怎么使用MRO”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python子类在多继承中怎么使用MRO”吧!子类在多继承中使用MRO机制在Python中...
    99+
    2023-07-05
  • C#中的继承怎么实现
    在C#中,继承是通过使用关键字" : "来实现的。下面是一个简单的示例,演示了如何在C#中实现继承: // 定义...
    99+
    2024-03-06
    C#
  • 怎么封装使用Go语言开发的redis
    本篇内容主要讲解“怎么封装使用Go语言开发的redis”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么封装使用Go语言开发的redis”吧!go redis 集合操作--saddredis的g...
    99+
    2023-06-25
  • redis是使用c语言开发的么
    redis 以 c 语言开发,主要好处包括:高性能,执行速度快。内存效率高,直接管理内存。可移植性强,支持多种操作系统和平台。可扩展性好,支持多线程和异步编程。 Redis 是使用 C...
    99+
    2024-04-19
    redis c语言 并发请求 键值对
  • java语言之继承与多态的概念是什么
    在Java语言中,继承是一种对象-oriented编程的概念,它允许一个类(称为子类或派生类)继承另一个类(称为父类或基类)的属性和...
    99+
    2023-10-11
    java
  • java怎么继承,使用什么关键字?
    继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。 (推荐学习:java课程)通过e...
    99+
    2015-08-21
    java入门 java
  • C++11继承的构造函数怎么使用
    本篇内容主要讲解“C++11继承的构造函数怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++11继承的构造函数怎么使用”吧!多重继承的情况上述方法在多重继承时仍然有效,除了一种情况:被...
    99+
    2023-06-19
  • Flask中jinja2的继承怎么实现
    这篇文章主要介绍Flask中jinja2的继承怎么实现,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在继承的使用上,我们最早接触的是父类和子类的继承。不过Flask框架中的继承要简单一些,只要有一个原文件,便可以对其...
    99+
    2023-06-14
  • Python中类的继承怎么实现
    本篇内容主要讲解“Python中类的继承怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python中类的继承怎么实现”吧!1. 单继承继承的主要作用是实现代码的重用。继承使得子类拥有父类...
    99+
    2023-07-02
  • VB.NET中继承的作用是什么
    这篇文章给大家介绍VB.NET中继承的作用是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。VB.NET继承相关内容概要:(1)Inherits表述--用来说明当前的类是继承了哪一个已经存在的类(基本类),Inher...
    99+
    2023-06-17
  • django中模板继承与ModelForm怎么用
    这篇文章主要讲解了“django中模板继承与ModelForm怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“django中模板继承与ModelForm怎么用”吧!模板的继承完美在写ht...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作