1. ホーム
  2. dart

[解決済み] Dartでプライベート変数を作成する方法は?

2022-11-11 07:30:16

質問

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

以下は私のコードです。

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でプライベート変数を作成するにはどうしたらよいですか?

どのように解決するのですか?

Dartのドキュメントより。

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

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

ライブラリについて少し。

<ブロッククオート

すべてのDartアプリは、たとえlibraryディレクティブを使用していなくても、ライブラリです。importディレクティブとlibraryディレクティブは、モジュール化され共有可能なコードベースを作成するのに役立ちます。

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