いろんな種類の口座を追加したいとき、BankAccountクラスをコピーして似たようなクラスを沢山作るのは大変なので継承を使う。
派生先の3種類の口座はすべて月末処理がある。しかしそのタスク内容は異なる。
そこでポリモーフィズムを使用。
- virtual
キーワード:基底クラスに定義する。派生クラスでオーバーライドできる。オーバーライドするかどうかは任意。
- abstract
キーワード:基底クラスに定義する。派生クラスでオーバーライドできる。オーバーライドは必須。
=>
を使って式を定義できる
public override string ToString() => $"{fname} {lname}".Trim();
これは以下の短縮形
public override string ToString()
{
return $"{fname} {lname}".Trim();
}
readonly
:オブジェクト構築後、この変数の値は変更できない
コンストラクタに付与し、別のコンストラクタを呼び出す
public BankAccount(string name, decimal initialBalance) : this(name, initialBalance, 0) { }
↑ 2つの引数を受け取った場合、this式で以下のコンストラクタ(引数が3つ)を呼び出す
public BankAccount(string name, decimal initialBalance, decimal minimumBalance)
{
// 何かの処理
}
protected
:派生クラスからのみ呼び出せる
返り値の型のサフィックスに?
をつける
protected virtual Transaction? CheckWithdrawalLimit(bool isOverdrawn){...
C#での条件分岐の書き方、省略した書き方、nullチェックの書き方のまとめ
条件文 ? trueの場合の処理 : falseの場合の処理