浅析 solidity 接口

浅析 solidity 接口

简述

solidity 的接口(interface),从名字来看,和其他语言的接口类似,只定义方法,不定义实现。类似下面

pragma solidity ^0.4.0;

interface interfaceContract {
    function interfaceTestFunc() returns(string);
}

实例

注意:
1、在两个.sol文件中都声明接口,或者两个合约写到一个.sol文件里,那就只要声明一次;
2、在一个合约中实现METHOD_A,该合同必须继承自接口interfaceContract;
3、在另一个合约中创建一个interfaceContract实例,该实例接受实现接口的合约的地址;
4、通过这个实例调用目标合约的方法,获取目标合约的数据

合约实例
pragma solidity ^0.4.0;

interface interfaceContract {
    function interfaceTestFunc() returns(string);
}

contract interContract is interfaceContract {
    function interfaceTestFunc() returns(string) {
        return "This is interfaceTestFunc";
    }
}

这里interContract合约实现了接口interfaceContract的interfaceTestFunc方法

合约实例的调用
pragma solidity ^0.4.0;

interface interfaceContract {
    function interfaceTestFunc() returns(string);
}

contract interTest {
    function func(address _addr) public returns(string) {
        interfaceContract _inter = interfaceContract(_addr);//_addr 是实现了interfaceContract接口的合约的地址,本例中指的是上面合约部署的地址,这个地方是接口调用的关键
        return _inter.interfaceTestFunc();
    }
}

将上面两个合约都部署到链上,使用interTest合约的func方法,将interContract合约的地址作为func 的参数传入,可以查看到输出 “This is interfaceTestFunc”

注意这里调用 func(address _addr)方法时,传递的参数_addr必须传递合约地址。并且这个合约地址是interfaceContract的实现类的合约地址。也就是第一步创建的interContract 合约的地址。如果传递的_addr参数错误,调用失败。它将回滚所有已执行的功能。也就是这个方法会回滚。
这里部署时,只需部署interTest 合约即可,不用管接口,接口只是为了声明。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值