Madea-K Dev

プログラムのメモや日々思ったことなど

< 35歳迄に起業し1000万円以上稼ぐ >

クラス

Dartはクラスとmixinベースの継承を持つオブジェクト指向言語です。
クラスの継承 [class/extends] はスーパークラスを一つしか継承できません。

ミックスインベースの継承とは、(Objectを除く)すべてのクラスが厳密に1つのスーパークラスを持っていても、クラス本体を複数のクラス階層で再利用できることを意味します。
ミックスインは、クラスのコードを複数のクラス階層で再利用する方法です。
ミックスインを使用するには、withキーワードに続けて1つ以上のミックスイン名を使用します。
次の例は、ミックスインを使用する2つのクラスを示しています。

※mixinキーワードのサポートはDart 2.1で導入されました。

継承の他に、[interface/implements] があります。
Implements は extends 出来なかったものを、該当のクラスにても実装するという意味があります。
また implemtns で実装されたクラスは、その implements 先の変数やメソッドを定義する必要があり、これにより漏れを塞ぐことができます。
Interface は implements 先に実装されたメンバを指します。
これは extends が継承が1個しかできなかった為の苦肉の策らしいです。

具体例は下記になります。

クラスの特殊な形について

・抽象的なクラス
抽象的なメソッドを持つことができる
new クラス名() はできない
よって直接メンバをいじることはできない

直接いじること、変更することができないから継承する必要があります。
その継承したクラスからproparty,methodを実行して、呼び出し、追加、削除などをする。

・列挙型について
列挙型は、列挙型または列挙型とも呼ばれ、
固定数の定数値を表すために使用される特別な種類のクラスです。

キャッシュを持つコンストラクタについて

・factoryコンストラクタ
クラスの新しいインスタンスを常に作成するとは限らないコンストラクタを実装するときは、factoryキーワードを使用してください。
たとえば、ファクトリコンストラクタはキャッシュからインスタンスを返す場合や、サブタイプのインスタンスを返す場合があります。
※ファクトリコンストラクタはthisにアクセスできません。
名前付きコンストラクタの継承方法について

・extendsで親のコンストラクタを呼び出す時に、親にコンストラクタが無い場合には名前付きコンストラクタ[super.(名前付きコンストラクタ)]で呼び出す必要がある。

コンストラクタの初期化について

・コンストラクタを呼び出す際に、自身の引数を初期化出来る。

メタデータについて

・Overriding members
サブクラスはインスタンスメソッド、ゲッター、およびセッターをオーバーライドできます。
意図的にメンバーをオーバーライドしていることを示すために@overrideを使用できます。

※@はメタデータ(コードに関する追加情報を提供)と言われる。

getter/setter
もし次の条件に当てはまる場合はメソッドのかわりにgetterを使用すべきだ。
– 引数を取らない
– 値を返す
– 副作用がない
– 高速に実行される

もし次の条件に当てはまる場合はメソッドのかわりにsetterを使用すべきだ。
– 単一の引数を取る
– オブジェクトの状態を変更する
– 対になるgetterがある
– 高速に実行される

メンバについて

・メンバへのアクセスは、必ず return される。
※ return が無ければ null が帰ってくる

/ Dart-Flutter

×