関数・変数の参照制約(private,public,internal,external)の種類・違いについて【Solidity】【ブロックチェーン・仮想通貨】

イーサリアムの開発言語であるSolidityで扱う、関数・変数の参照制約(private,public,internal,external)の種類・違いについて紹介しています。

参照可能な範囲

参照制約コントラクト内部コントラクト外部継承先
public
private××
internal×
external××

変数における可視性

  • public
    • getterが自動的に作成される
    • 外部から参照する場合はgetter呼び出し、内部から参照する場合は値を直接読み取る
    • setterは作成されないため、外部からは更新できない
  • internal
    • 変数のデフォルト値となる
    • 内部もしくは、継承先からのみ参照可能
  • private
    • 内部からのみ参照可能
    • internalとの違いは、継承先から参照不可能な点のみ

関数における可視性

関数の呼び出し方法には、内部呼び出し・外部呼出しの2種類があります。

  • external
    • 外部からのみ呼び出し可能
    • 外部呼出しを用いれば、内部でも呼び出し可能(this.f())
  • public
    • 関数のデフォルト値となる
    • 内部呼び出し、外部呼出しどちらでも呼び出し可能
  • internal
    • 内部もしくは、継承先からのみ呼び出し可能
    • internal型のパラメータを取得できる
  • private
    • 内部からのみ参照可能
    • internalとの違いは、継承先から呼び出し不可能な点のみ

参照制約の使い方

関数名の後方に記載するだけ

function a() public {}
function b() private {}
function c() internal {}
function d() external {}
Solidity
この記事を書いた人

エンジニアとして仕事をしています。
仕事や趣味を通して、開発やプログラミングについて学んだことを綴っていきます。
 ・実務経験は、WEBシステムのサーバーサイドコーディングがメイン
 ・アプリ開発は趣味程度

akihiro-takedaをフォローする
akihiro-takedaをフォローする
プログラミング・開発の備忘録
タイトルとURLをコピーしました