※プロパティの構文を確認
アクセス修飾子 データ型 プロパティ名{ get { return 値; } set { フィールド名 = value; } }
※派生クラスのコンストラクタ(引数つき)
基本クラスのコンストラクタに引数を渡す場合は、コンストラクタ名の後ろに「:base(引数)」と書く。
オーバーライド
継承した基本クラスのメソッドやプロパティを上書きすること。
≠オーバーロード(多重定義)・・・同じ名前のメソッドを複数定義すること
<書き方>
基本クラス側
「virtual」をつける。
派生クラス側
クラス名の後ろに「: 基本クラス名」を書く。
「override」をつける。
(overrideがついているメソッドもオーバーライド可能。ただしsealedがつくとオーバーライドできない)
基本クラスのメソッドと同じ「アクセス修飾子 戻り値の型 メソッド名 (引数)」にすること。
(staticメソッドはオーバーライドできない)
基本クラスのプロパティと同じ「アクセス修飾子 データ型 プロパティ名」にすること。
基本クラスのメンバーを使用する場合は「base.」をつける。
Objectクラス
全クラスの始祖にあたる基本クラス
フィールドもメソッドも定義されていないクラスもObjectクラスを継承している。
アップキャストとダウンキャスト
アップキャスト:基本クラスの変数に派生クラスのインスタンスを代入すること→基本クラスのメンバーのみ使用可能。
ダウンキャスト:明示的にキャスト演算子が必要。
(アップキャストして生成したインスタンスが、派生クラスのメンバーを使いたいときにダウンキャストする)
抽象クラス
「abstract」がついているクラス。インスタンス化できない。
「抽象メンバー」(抽象メソッド、抽象プロパティ)を使用することができる。
オーバーライドして実装したメソッド、プロパティを「具象メンバー」という。
ポリモーフィズム
使用するインスタンスによってメソッドの動作を変える仕組み
抽象クラスで変数宣言をして、どの派生クラスのインスタンスを入れたかによってメソッドの動きが異なる。
コメント