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();
}
}
這部分比較難,不好理解可以多看幾次,就會知道其中的含意了!
有任何問題可反饋: [email protected]