solidity系列教程<十>抽象合約、接口

抽象合約(類似于java的抽象類)

合約的函數(shù)可以缺少一個實(shí)現(xiàn)如下面的例子(注意,函數(shù)聲明報(bào)頭由終止;):

pragma solidity ^0.4.14;

contract Feline {
    function utterance() returns (bytes32);
}

這樣的合約不能通過編譯,即使合約內(nèi)也包含一些正常的函數(shù)。但它們可以做為基合約被繼承。

pragma solidity ^0.4.14;

contract Feline {
    function utterance() returns (bytes32);
    
    function getContractName() returns (string){
        return "Feline";
    }
}

contract Cat is Feline {
    function utterance() returns (bytes32) { return "miaow"; }
}

如果一個合約從一個抽象合約里繼承,但卻沒實(shí)現(xiàn)所有函數(shù),那么它也是一個抽象合約。

接口

接口與抽象合約類似,與之不同的是,接口內(nèi)沒有任何函數(shù)是已實(shí)現(xiàn)的,同時還有如下限制:

  • 不能繼承其它合約,或接口。
  • 不能定義構(gòu)造器
  • 不能定義變量
  • 不能定義結(jié)構(gòu)體
  • 不能定義枚舉類

其中的一些限制可能在未來放開。

接口基本上限制為合約ABI定義可以表示的內(nèi)容,ABI和接口定義之間的轉(zhuǎn)換應(yīng)該是可能的,不會有任何信息丟失。

interface Token {
    function transfer(address recipient, uint amount);
}
合約可以繼承于接口,因?yàn)樗麄兛梢岳^承于其它的合約。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容