Solidity – 界面基础
接口与使用interface 关键字创建的抽象合约相同,也称为纯抽象合约。接口没有任何定义或任何状态变量、构造函数或任何具有实现的函数,它们只包含函数声明,即接口中的函数没有任何语句。接口的函数只能是外部类型。它们可以从其他接口继承,但不能从其他合约继承。一个接口可以有枚举,可以使用接口名称点符号访问的结构。
示例:在下面的示例中,合约 thisContract实现了一个接口 InterfaceExample并实现了所有接口函数。
Solidity
// Solidity program to
// demonstrate the working
// of the interface
pragma solidity 0.4.19;
// A simple interface
interface InterfaceExample{
// Functions having only
// declaration not definition
function getStr(
) public view returns(string memory);
function setValue(
uint _num1, uint _num2) public;
function add(
) public view returns(uint);
}
// Contract that implements interface
contract thisContract is InterfaceExample{
// Private variables
uint private num1;
uint private num2;
// Function definitions of functions
// declared inside an interface
function getStr(
) public view returns(string memory){
return "GeeksForGeeks";
}
// Function to set the values
// of the private variables
function setValue(
uint _num1, uint _num2) public{
num1 = _num1;
num2 = _num2;
}
// Function to add 2 numbers
function add(
) public view returns(uint){
return num1 + num2;
}
}
contract call{
//Creating an object
InterfaceExample obj;
function call() public{
obj = new thisContract();
}
// Function to print string
// value and the sum value
function getValue(
) public returns(uint){
obj.getStr;
obj.setValue(10, 16);
return obj.add();
}
}
输出 :