📜  Solidity – 界面基础

📅  最后修改于: 2022-05-13 01:54:45.832000             🧑  作者: Mango

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();
    }
}


输出 :

接口示例