Dart-programming-classes
Dartプログラミング-クラス
Dartはオブジェクト指向言語です。 クラス、インターフェースなどのオブジェクト指向プログラミング機能をサポートしています。 OOPに関する class は、オブジェクトを作成するための青写真です。 class はオブジェクトのデータをカプセル化します。 Dartは、 class と呼ばれるこの概念の組み込みサポートを提供します。
クラスを宣言する
構文
クラス定義には、次のものを含めることができます-
- フィールド-フィールドは、クラスで宣言された変数です。 フィールドは、オブジェクトに関連するデータを表します。
- セッターとゲッター-プログラムがクラスのフィールドの値を初期化および取得できるようにします。 デフォルトのゲッター/セッターはすべてのクラスに関連付けられています。 ただし、セッター/ゲッターを明示的に定義することにより、デフォルトのものをオーバーライドできます。
- コンストラクタ-クラスのオブジェクトにメモリを割り当てる役割を担います。
- 関数-関数はオブジェクトが実行できるアクションを表します。 また、メソッドと呼ばれることもあります。
これらのコンポーネントをまとめて、クラスの*データメンバー*と呼びます。
例:クラスの宣言
この例では、クラス Car を宣言しています。 クラスには engine という名前のフィールドがあります。 * disp()は、フィールド *engine の値を出力する単純な関数です。
クラスのインスタンスの作成
クラスのインスタンスを作成するには、 new キーワードにクラス名を続けて使用します。 同じための構文は以下のとおりです-
構文
- new キーワードはインスタンス化を担当します。
- 式の右側は、コンストラクターを呼び出します。 パラメーター化されている場合、コンストラクターに値を渡す必要があります。
例:クラスのインスタンス化
属性と機能へのアクセス
クラスの属性と機能は、オブジェクトを介してアクセスできます。 クラスのデータメンバーにアクセスするには、「。」ドット表記(*ピリオドと呼ばれる)を使用します。
例
Dartの属性と機能にアクセスする方法を理解するために、次の例を見てください-
上記のコードの*出力*は次のとおりです-
Dartコンストラクター
コンストラクターは、クラスの変数の初期化を担当するクラスの特別な関数です。 Dartは、クラスの名前と同じ名前のコンストラクターを定義します。 コンストラクターは関数であるため、パラメーター化できます。 ただし、関数とは異なり、コンストラクターは戻り値の型を持つことはできません。 コンストラクターを宣言しない場合、デフォルトの*引数なしコンストラクター*が提供されます。
構文
例
次の例は、Dartでコンストラクタを使用する方法を示しています-
次の output が生成されるはずです-
名前付きコンストラクター
Dartは named constructors を提供して、クラスが*複数のコンストラクター*を定義できるようにします。 名前付きコンストラクタの構文は以下のとおりです-
構文:コンストラクターの定義
例
次の例は、Dartで名前付きコンストラクタを使用する方法を示しています-
次の output が生成されるはずです-
thisキーワード
例
次の例では、Dartで this キーワードを使用する方法を説明します-
次の output が生成されるはずです-
Dart Class─ゲッターとセッター
デフォルトのゲッター/セッターは、すべてのクラスに関連付けられています。 ただし、セッター/ゲッターを明示的に定義することにより、デフォルトのものをオーバーライドできます。 ゲッターにはパラメーターがなく、値を返します。セッターにはパラメーターが1つあり、値を返しません。
構文:ゲッターの定義
構文:セッターの定義
例
次の例は、Dartクラスで getters および setters を使用する方法を示しています-
このプログラムコードは、次の*出力*を生成する必要があります-
クラスの継承
Dartは、既存のクラスから新しいクラスを作成するプログラムの機能である継承の概念をサポートしています。 新しいクラスを作成するために拡張されたクラスは、親クラス/スーパークラスと呼ばれます。 新しく作成されたクラスは、子/サブクラスと呼ばれます。
クラスは、「extends」キーワードを使用して別のクラスから継承します。 子クラスは、親クラスのコンストラクタを除くすべてのプロパティとメソッドを継承します。
構文
注-Dartは多重継承をサポートしていません。
例:クラスの継承
次の例では、クラス Shape を宣言しています。 このクラスは、 Circle クラスによって拡張されます。 クラス間に継承関係があるため、子クラス、つまりクラス Car は親クラスのデータメンバーへの暗黙的なアクセスを取得します。
次の output が生成されるはずです-
継承の種類
継承は、次の3つのタイプにすることができます-
- Single -すべてのクラスは、1つの親クラスから最大で拡張できます。
- Multiple -クラスは複数のクラスから継承できます。 Dartは多重継承をサポートしていません。
- マルチレベル-クラスは別の子クラスから継承できます。
例
次の例は、マルチレベルの継承の仕組みを示しています-
クラス Leaf は、マルチレベルの継承により、RootクラスとChildクラスから属性を取得します。 その*出力*は次のとおりです-
Dart –クラスの継承とメソッドのオーバーライド
メソッドのオーバーライドは、子クラスが親クラスのメソッドを再定義するメカニズムです。 次の例は同じことを示しています-
例
次の output が生成されるはずです-
メソッドをオーバーライドしている間、関数パラメーターの数とタイプは一致する必要があります。 パラメーターの数またはそれらのデータ型が一致しない場合、Dartコンパイラーはエラーをスローします。 次の図は同じことを説明しています-
次の output が生成されるはずです-
静的キーワード
例
次の output が生成されるはずです-
スーパーキーワード
例
次の output が生成されるはずです-