継承
基底クラス(メソッドA)
↑継承
派生クラス(メソッドB)
・派生クラスはメソッドAとBが使える(派生クラスで改めてメソッドAを定義する必要はない)
・クラス図では上記のように、継承を「派生クラス→基底クラス」で表す。(詳しくは画像検索)
・基底クラスをスーパークラス、派生クラスをサブクラスともいう。
・基底クラスを親クラス、派生クラスを子クラスと呼ぶこともある。
派生クラスの作成
1 2 3 4 5 |
//Boxクラスを継承したJeweryBoxクラスを作成 class JeweryBox:Box { ・・・ } |
上記のように「:基底クラス」で派生クラスを作成できる。
派生クラスのコンストラクタ
1 2 3 4 5 |
//コンストラクタが基底クラスと同じ場合 public JeweryBox(string item):base(item) { ・・・ } |
base(item)のitemは、JewelryBox(string item)のitemのこと。
メソッドのオーバーライド
・基底クラスが持つメソッドを、派生クラスで再定義すること。
・基底クラスのメソッドにvirtualを付ける(仮想メソッド)。
・派生クラスのメソッドにoverrideを付ける。
・メソッド名は同じにする。
1 2 3 4 5 6 7 8 9 10 11 |
: public virtual void Open() { Console.WriteLine($"宝箱を開いた。{item}を手に入れた。") } : public override void Open() { Console.WriteLine("宝箱を開いた。宝箱はミミックだった!") } |
・以下のようなオブジェクトを生成してメソッドを実行する場合、変数の型ではなくインスタンスの型でメソッドを実行する。
Class1 c1 = new Class2();
仮想メソッド
メソッドにvirtualをつけて定義すると仮想メソッドになる。
オーバーライドできるメソッドは仮想メソッドであり、非仮想メソッドはオーバーライドできない。
オーバーロード
同じメソッド名で引数の数やデータ型が異なるメソッドを定義できる。
標準ライブラリ
SDKインストール時に一緒についてくる、あらかじめ用意されている機能群。
標準で提供される、よくつかう便利な機能群ということ。
クラスで構成されている。
名前空間で管理されている。
名前空間(ネームスペース)
クラスを整理するために使われる概念。
クラスに分類に使用されるグループ。
同じ名前空間内では同じクラスは定義できないが、別の名前空間では定義できる。
名前空間.クラス.メソッド
System.Console.WriteLine(“Hello World”);
usingディレクティブ
コードのはじめ(ファイルの一番上)に、usingに続けて名前空間を書いておくと、その名前空間はコード中で省略できる。
例:using System;
ジェネリッククラス
オブジェクトを生成する際に〈〉で型を指定するクラスリストを使う。