亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

solidity智能合約[34]-合約繼承與可見性

發布時間:2020-08-02 00:49:39 來源:網絡 閱讀:285 作者:jonson_jackson 欄目:開發技術

繼承

繼承是面向對象語言的重要特征。繼承是為了模擬現實中的現象,并且可以簡化代碼的書寫。
例如貓與夠都屬于動物。他們都繼承動物的某些特征。

繼承語法

當前合約繼承父類合約的屬性和方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
contract  合約名  is  父類合約名{

}
```                              

## 繼承例子

下面的例子中。直接部署son合約后,son合約繼承了father合約的狀態變量money與函數dahan,所以在son合約中,仍然可以訪問或修改父類的狀態變量和方法。
同時,在son合約中,有屬于自己特有的狀態變量和方法。
```js
pragma solidity ^0.4.23;


contract father{
   uint public money  =10000;
   function dahan() public returns(string){
       return "dahan";
   }
}

contract son is father{
   uint public girlfriend;
   //修改父類屬性
   function change() public{
       money = 99;
   }
}

繼承與可見性

public

狀態變量默認是public的類型,可以被繼承,可以在外部與內部被調用

1
2
3
4
5
6
7
8
9
contract father{
   uint  money  = 10000;
}

contract son is father{
   function getMoney() public view returns(uint){
      return money;
   }
}

函數默認為public屬性,可以被繼承,可以在外部與內部被調用

1
2
3
4
5
6
7
8
9
10
11
contract father{
 function dahan()  pure returns(string){
      return "dahan";
  }
}

contract son is father{
 function test() public view returns(string){
     return dahan();
 }
}

internal

當為狀態變量添加了inernal屬性,仍然可以被繼承,internal屬性只能夠被合約中的方法調用,不能夠在外部被直接調用。

1
2
3
4
5
6
7
8
9
contract father{
   uint internal money  = 10000;
}

contract son is father{
   function getMoney() public view returns(uint){
      return money;
   }
}

當為函數添加了inernal屬性,仍然可以被繼承,internal屬性只能夠被合約中的方法調用,不能夠在外部被直接調用。

1
2
3
4
5
6
7
8
9
10
11
contract father{
 function dahan() internal pure returns(string){
      return "dahan";
  }
}

contract son is father{
 function test() public view returns(string){
     return dahan();
 }
}

external

狀態變量沒有external屬性,但是函數有。
當為函數加上external屬性后,意味著合約只能夠在外部被調用,不能夠在內部被調用。
如果想合約在內部被調用,需要使用到如下this.函數的方式:

1
2
3
4
5
6
7
8
9
10
11
12
13
contract father{

   function dahan() external pure returns(string){
       return "dahan";
   }
}

contract son is father{    
   function test() public view returns(string){
       return this.dahan();
   }

}

能夠調用external的第二種方式。

1
2
3
4
5
6
7
8
9
10
11
12
13
contract father{

   function dahan() external pure returns(string){
       return "dahan";
   }
}
contract testExternal{
  father f = new father();

    function test() public view returns(string){
       return f.dahan();
   }
}
  • 本文鏈接: https://dreamerjonson.com/2018/11/22/solidity-34-inherit/

  • 版權聲明: 本博客所有文章除特別聲明外,均采用 CC BY 4.0 CN協議 許可協議。轉載請注明出處!

solidity智能合約[34]-合約繼承與可見性

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新民市| 乐业县| 漾濞| 建德市| 中宁县| 马关县| 林芝县| 壶关县| 鄂伦春自治旗| 弥勒县| 永州市| 禄劝| 灵山县| 社旗县| 阿图什市| 磐安县| 澄迈县| 正蓝旗| 漯河市| 闻喜县| 通海县| 门头沟区| 江阴市| 文登市| 桂东县| 二连浩特市| 尉氏县| 黑龙江省| 太原市| 龙岩市| 突泉县| 海晏县| 东莞市| 乾安县| 曲松县| 永福县| 宁蒗| 巴南区| 新民市| 五华县| 保德县|