Interface 又稱介面,意思就是定好框架讓別人去使用。ex: ERC20、ERC721 這些都是別人寫好的框架,我們只要專注於框架內的寫法即可。

會分為三個架構 訂定介面→ 實作定義的方法→使用實作。

寫法如下:

// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;

interface IEmployee{
	function setName(string memory) external;
	function getName() external view returns(string memory);
}

通常如果是Interface的話我們習慣會在 function 的第一個字加上 I 方便我們做辨識

上面可以看到介面裡**只能定義方法,**是沒有在單獨定義變數。

另外特別強調修飾的詞都要加 external **。**為什麼呢?因為介面只能內部複寫及調用

(如果外部可以,介面的意義救沒了...)

看一下怎麼實現

// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;

contract Employee is IEmployee{
	string private name;

	function setName(string memory _name) public override{
		name =_name;
	}

	function getName() public oberride view returns(string memory){
		return name;
	}
}

如何使用

// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;

contract Company {
	IEmployee employee;
	constructor(address _address){
		employee = IEmployee(_address);
	}

	function setName(string memory _name) public {
		employee.setName(_name);
	}

	function getName() public oberride view returns(string memory){
		return employee.getName();
	}
}

這部分比較難,不好理解可以多看幾次,就會知道其中的含意了!

15.案例1 - 搶紅包

有任何問題可反饋: [email protected]