You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Solidity合约报错:Contract 'InterfaceB'需标记为abstract的解决办法

Solidity 错误 TypeError: Contract "InterfaceB" should be marked as abstract 解决方案

错误原因

在Solidity语法规则里,普通contract必须实现所有声明的函数。如果一个contract只包含无函数体的空函数,编译器会要求将其标记为abstract。但你这里的InterfaceB本质是接口,应该用Solidity专门的interface关键字定义,而非contract。

解决步骤

  • 把定义InterfaceB的关键字从contract改为interface:这是Solidity定义接口的标准方式,接口默认所有函数都是external且无需实现,编译器不会再要求标记abstract。
  • 修正ContractB的函数修饰符顺序:Solidity要求状态修饰符(pure/view)必须放在可见性修饰符(external/public等)之后,即把pure external调整为external pure。
  • 让ContractB明确实现接口:通过is InterfaceB声明合约与接口的实现关系,确保合约符合接口规范。
  • 修正字符串拼写错误:将Hellow改为Hello。

修正后的完整代码

pragma solidity ^0.8.0;

interface InterfaceB {
    function getMessage() external pure returns(string memory);
}

contract ContractB is InterfaceB {    
    function getMessage() external pure returns(string memory){
            return "Hello World.";
    }
}

内容的提问来源于stack exchange,提问作者DeFi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 10:01:57