Dartでプライベート変数を作成するにはどうすればいいですか? 質問する

Dartでプライベート変数を作成するにはどうすればいいですか? 質問する

プライベート変数を作成したいのですが、できません。

これが私のコードです:

void main() {
  var b = new B();
  b.testB();    
}

class A {
  int _private = 0;

  testA() {
    print('int value: $_private');
    _private = 5;
  }
}

class B extends A {
  String _private;

  testB() {
    _private = 'Hello';
    print('String value: $_private');
    testA();
    print('String value: $_private');
  }
}

このコードを実行すると、次の結果が得られます。

String value: Hello
int value: Hello
Breaking on exception: type 'int' is not a subtype of type 'String' of 'value'.

また、このソース コードを編集してもエラーや警告は表示されません。

Dart でプライベート変数を作成するにはどうすればいいですか?

ベストアンサー1

Dart ドキュメントより:

Java とは異なり、Dart には public、protected、private というキーワードはありません。識別子がアンダースコアで始まる場合_、その識別子はそのライブラリに対してプライベートです。

ライブラリは API を提供するだけでなく、プライバシーの単位でもあります。アンダースコアで始まる識別子は_ライブラリ内でのみ表示されます。

ライブラリについて少し説明します。

すべての Dart アプリは、ライブラリ ディレクティブを使用していない場合でもライブラリです。インポート ディレクティブとライブラリ ディレクティブを使用すると、モジュール化され共有可能なコード ベースを作成できます。

partライブラリを複数の Dart ファイルに分割できるディレクティブについて聞いたことがあるかもしれません。

Dart ドキュメント「ライブラリと可視性」

おすすめ記事