Solidity abstract关键字的使用详解(2023版)

TMS320F280049C 学习笔记21 交叉开关 Crossbar (X-BAR) 简单介绍了X-BAR。 阅读详情

abstract功能

用于定义抽象合约,供其他合约继承使用

abstract作用

  • 抽象合约将合约的定义与其实现脱钩,从而提供了更好的可拓展性;
  • 简化了诸如Template方法的模式,并消除了代码重复;

abstract规则

  • 如果未实现合约中的至少一项功能,则需要将合约标记为抽象;
  • 即使实现了所有功能,合约也可以被标记为抽象的;
  • 抽象合约不能实例化;
  • 如果合约继承自抽象合约,并且没有通过覆盖实现所有未实现的功能,则也需要将其标记为抽象;
  • 抽象合同不能覆盖未实现的函数;

具体代码如下

// SPDX-License-Identifier: GPL-3.0

pragma solidity ^0.8.7;

//导入其他文件
import "./IUser.sol";

//继承
abstract contract absUser is IUser{
//    function addUser(string memory _name,uint8 _age) override external{
//   }
    function getUser(string memory _name)override external view returns(string memory,uint8){
    }
}

contract User is absUser{
    function addUser(string memory _name,uint8 _age) override external{
   }
}

我们可以看到这里通过abstract定义了抽象合约,之后通过继承实现了抽象函数中的getUser方法,然后自己又实现了addUser的方法。这里就是通过abstract关键字实现了合约的继承和拓展的设计,其实也就是由继承者去实现。

【ESP32摄像头开发实例】-视频流接入Home Assistant 在这个项目中,我们将使用ESP32-CAM板构建一个IP监控摄像头。ESP32摄像头将托管一个视频流媒体网络服务器,您可以使用网络中的任何设备进行访问。 阅读详情

相关推荐

寒假实训笔记day01——认识M4单片机之STM32F405RGT6

认识M4单片机之STM32F405RGT6(含义、规格、参数)

weixin_47200070的博客 8551

14. solidity 抽象合约 abstract 与接口 interface

这一讲,我介绍了solidity中的抽象合约(abstract)和接口(interface),他们都可以写模版并且减少代码冗余。我们还讲了ERC721接口合约IERC721,以及如何利用它与无聊猿BAYC合约进行交互。

一个字,学 996

操作系统笔记(含王道计算机考研——操作系统课件)

操作系统(OS) 笔记根据B站王道计算机考研——操作系统视频整理所得,视频链接:https://b23.tv/0I2qex 视频中所用课件:链接:https://pan.baidu.com/s/101bFWm0Tv0emNpEneidYPA 提取码:y3dd 1.计算机系统概述 1.简介 什么是操作系统? 操作系统(Operating Ststem, OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境,它是

拧发条鸟的博客 6万+

solidity抽象(abstract)合约(很常用)

当合约中至少有一个函数没有被实现,或者合约没有为其所有的基本合约构造函数提供参数时, 合约必须被标记为 abstract。即使不是这种情况,合约仍然可以被标记为 abstract, 例如,当您不打算直接创建合约时。抽象(abstract)合约类似于 接口(interface)合约, 但是接口(interface)合约可以声明的内容更加有限。通俗解释抽象合约是一种至少包含一个未被实现(即没有函数体的)函数的合约。这种合约不能直接部署到以太坊网络上,因为它不是完整定义的。抽象合约通常作为基础合约,为派生合约提供

suannai11的博客 737

P1003 [NOIP2011 提高组] 铺地毯 python题解

解题思路: 1、根据题意,所有地毯都是挨着铺的,所以最上面的一条符合题意的一定是从后往前数的第一条符合题意的。 2、符合题意要求x和y同时满足大于等于地毯左边坐标并且小于等于地毯右边坐标。 代码如下: n = int(input()) a = [] for i in range(n): a.append(list(map(int,input().split()))) x,y = list(map(int,input().split())) l = len(a) while l > 0: ..

繁华三千东流水不舍昼夜的博客 1620

PLC编程标准之争:IEC61131与IEC61499核心区别与选型指南

在工业自动化领域,PLC编程长期依赖IEC61131标准,它定义了梯形图、结构化文本等语言,通过周期扫描机制保证确定性执行。然而,随着工业4.0和分布式控制场景的兴起,IEC61499以事件驱动模型打破传统范式,让功能块能跨设备协同,实现更灵活的柔性产线和模块化系统。理解两者在程序结构、数据交互、部署方式和实时性上的差异,是选型与工程落地的关键。本文从基础概念出发,剖析执行模型与架构演进,结合一线调试经验,帮助工程师在传统PLC与下一代标准之间做出理性决策。

weixin_27014595的博客 269

solidity笔记(3)——abstract用法——2021.5.10

solidity笔记(3)——abstract用法一丶功能:(1)abstract 定义抽象合约,供其他合约继承使用二丶作用:(1)抽象合约将合约的定义与其实现脱钩,从而提供了更好的可扩展性和自文档性(2)简化了诸如Template方法的模式,并消除了代码重复。三丶注意:(1)如果未实现合约中的至少一项功能,则需要将合同标记为抽象。(2)即使实现了所有功能,合同也可以被标记为抽象的。(3)这样的抽象合同不能直接实例化。(4)如果抽象合约本身实现了所有定义的功能,也不能直接实例化(5)如果合约继承自抽象合约,

weixin_43402353的博客 1945

PCL 最小生成树用于法向量定向【2025最新版】

PCL 最小代价生成树用于点云法向量的定向。博客长期更新,本文最近更新时间为:2025年9月15日。

点云侠的博客 2067

第97篇 笔记-solidity中的抽象(Abstract)

solidity中的抽象

wonderBlock的博客 3693

YOLOv11 改进 - 特征融合 | SSFF+TPE+CPAM 协同,ASF-YOLO 三重模块破解密集小目标分割难题

本文介绍了基于注意力尺度序列融合的ASF - YOLO模型在YOLOv11中的结合应用。ASF - YOLO旨在实现准确快速的细胞实例分割,结合空间和尺度特征,引入SSFF模块增强多尺度信息提取能力,TFE模块融合不同尺度特征图,CPAM整合前两者以关注信息丰富通道和小物体。我们将ASF - YOLO相关模块集成进YOLOv11,替代原有的部分特征融合模块,实现更高效的特征提取与融合。实验证明,YOLOv11 - ASFYOLO在细胞实例分割任务中表现出色,展现了该模型在深度学习中的广泛应用前景。

魔改工程师的博客 1257

【STM32实物】基于STM32设计的智能仓储管理系统

近年来,随着我国仓储发展的和药品需求的不断增多,许多医院都采用药物仓储管理系统。我国的药物仓储产业已经有了长足的发展,仓库的规模不断变大,对仓储的要求也不断增高,药物的存储,识别以及对仓储环境条件的要求成为仓储的重要决策,他们可以根据不同的特点在不同场景中使用。本文详细介绍了一个基于单片机技术的智能仓储管理系统的设计与实现,这个系统可谓是集射频识别(RFID)技术和环境监测传感器于一身,旨在提高仓储操作的自动化和精确度。

嵌入式阿齐Archie 1万+

Solidity 非权威开发指南(2):语法摘要

类似 class,可以:abstract、继承和被其他 contract 调用。典型使用:注:对于 public 变量,会自动生成对应的 getter(详见:Ethers.js 非权威开发指南(续))。注:payable,接收 eth 的函数必需加上view 或 pure,表示函数不会改变以太坊状态fallback 和 receive 函数关于在 dapp 中如何使用事件和查询日志,详见:Ethers.js 非权威开发指南(下)类似其他语言中的 interface,可以:类似 contract,但:两者关系

smartContractXH的博客 616

RAG效果调优清单(命中率提升3倍)

本文提出了一套工程可落地的RAG(检索增强生成)模型组合方案,强调通过最优组合实现效果、成本和扩展性的平衡。核心架构包括Embedding模型、向量数据库检索、Rerank模型和LLM生成四个环节,推荐了四种具体组合方案:本地最优性价比(bge+reranker+Qwen 7B)、效果优先(bge-large+reranker+14B模型)、高并发(轻量模型+vLLM)和中英混合(多语言模型)。文章指出Embedding决定检索下限,Rerank提升准确率上限,LLM影响最终体验,并提供了不同场景的优化策略

刘一说的IT专栏 522

Solidity极简入门#14. 抽象合约和接口

这一讲,我介绍了solidity中的抽象合约(abstract)和接口(interface),他们都可以写模版并且减少代码冗余。我们还讲了ERC721接口合约IERC721,以及如何利用它与无聊猿BAYC合约进行交互。

sleep的博客 1279

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Solidity 小白教程:14. 抽象合约和接口

这一讲,我介绍了solidity中的抽象合约(abstract)和接口(interface),他们都可以写模版并且减少代码冗余。我们还讲了ERC721接口合约IERC721,以及如何利用它与无聊猿BAYC合约进行交互。

区块链、智能合约工具箱 567

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

solidity合约入门

基本类型 int 用intx和uintx来申明,其中x是一个8-256之间的8的倍数,表示有多少个bit。如int8 ,uint32。 比较:<=,<,==,!=,>=,> 位运算:&,|,^,~,<<,>> 数值运算:加减乘除,%取余,指数。0的0次方等于1 type(x).min和type(x).max给出该类型的上下界 溢出会被截断 address address与address payable:储存160个bit长的信息,也就是一个地址。

【03】的博客 1392

solidity 合约继承

继承通过关键字 is 来实现,例如: 访问权限 1 子类不能访问父类的private的,其他的都可以访问,比如Public internal 2 继承不允许函数或变量重名从 0.6 开始,solidity 引入了 abstract, virtual, override 几个关键字,用于重写函数。 基类中可以包含没有实现代码的函数,也就是纯虚函数,那么基类必须声明为 abstract。示例以下:...

李卓书 494

solidity最全开发详细语法解释以及示例说明

solidity最全开发详细语法解释以及示例说明

leaning_java的博客 2306

深入理解Solidity——抽象合约和接口

抽象合约(Abstract Contracts) 合约函数可以缺少实现(请注意,函数声明头被;终止),见下面的例子: pragma solidity ^0.4.0; contract Feline { function utterance() public returns (bytes32); } 这样的合约不能被编译(即使它们同时包含具体函数和抽象函数),但它们可以用作父合约...

黄嘉成的博客 5597

solidity语言学习(9)—— 合约(Contract)

在solidity中合约类似于面对对象的语言中的类。他包括了状态变量中那些长期的数据以及能够修改这些状态的函数。在一个合约中调用另一个合约(实例)的函数会执行一个EVM函数调用,它将转换上下文内容是得状态变量不可触及。 创造合约 合约是通过以太坊交易或者来自solidity合约内部,“从外部”产生的。 一些典型的IDE,比如说Remix,能够使用UI元素创造无缝的进程。 在以太坊中程式...

weixin_42595515的博客 4557

Solidity - 基础语法

章节Solidity – 介绍 Solidity – 环境搭建 Solidity – 基础语法 Solidity – 第一个程序 Solidity – 代码注释 Solidity – 数据类型 Solidity – 变量 Solidity – 变量作用域 Solidity – 运算符 Solidity – 算术运算符 Solidity – 比较运算符 Solidity – 逻辑运算符 ...

吴吃辣 1150

Solidity(5)

1.合约Solidity中合约有点类似面向对象语言中的类。合约中有用于数据持久化的状态变量(state variables),和可以操作他们的函数。调用另一个合约实例的函数时,会执行一个EVM函数调用,这个操作会切换执行时的上下文,这样,前一个合约的状态变量(state variables)就不能访问了。1.1 创建合约IDEs,例如Remix,UI更好。通过使用JavaScript API web

sunniy27的博客 4069

Solidity 官方文档中文版(二)

Solidity AssemblySolidity定义了一个汇编语言,可以不同Solidity一起使用。这个汇编语言还可以嵌入到Solidity源码中,以内联汇编的方式使用。下面我们将从内联汇编如何使用着手,介绍其与独立使用的汇编语言的不同,最后再介绍这门汇编语言。文档尚待完善的补充的地方:待补充内联汇编的变量作用域的不同,尤其是使用含internal的函数的库时所引入的复杂度。另外,还需补充,编...

xiatiancc的专栏 9859

【Solidity】8. 杂项 - 深入理解Solidity

索引 【Solidity】1.一个Solidity源文件的布局 【Solidity】2.合约的结构体 【Solidity】3.类型 【Solidity】4.单位和全局可变量 【Solidity】5.表达式和控制结构 【Solidity】6. 合约 【Solidity】7. 部件 【Solidity】8. 杂项 ...

weixin_33762130的博客 558

solidity笔记(4)——冻结和交易属性——2021.5.10

solidity(4)——冻结和交易属性一丶笔记(1)blockhash(uint blockNumber)返回(bytes32):给定块的哈希-仅适用于256个最新块,不包括当前块(2)block.chainid(uint):当前链号(3)block.coinbase(应付地址):当前区块矿工的地址(4)block.difficulty(uint):当前区块难度(5)block.gaslimit(uint):当前块的gaslimit(6)block.number(uint):当前块号(7)block.ti

weixin_43402353的博客 1102

Solidity原理(一):继承(Inheritance)

首先看一段官网的描述:Solidity supports multiple inheritance by copying code including polymorphism.When a contract inherits from multiple contracts, only a single contract is created on the blockchain, and the ...

Programmer_CJC的博客 3341

solidity笔记(2)——第二篇——2020.10.26

2020.10.26 星期一 solidity笔记 智能合约中,不支持直接返回string[],其他类型的数组,可以直接返回 智能合约中,不支持字符串直接拼接,如果想要实现拼接功能,可以转为bytes在去实现相关操作 方法修饰符,如果加了view将不会消耗gas,并且调用此方法,不需要用户私钥,可直接调用 拷贝合约:合约 新合约名 = 合约(地址) address(0)代表空地址 library库合约,特定地址部署一次,就可以被其他合约反复调用 如果用继承父合约的相同状态变量或方法,会消耗大量gas,如果

weixin_43402353的博客 973
上一篇: Solidity 合约调试和event事件(2023版)
下一篇: Solidity library库的使用详解(2023版)
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值