に投稿

C# アクセシビティなど実験色々

┗ グローバル名前空間
┗ 名前空間(namespace)
┗ 型(クラス)空間

5つのアクセシビティ

PUBLIC: 制限されない
PROTECTED: クラス内部から + 派生クラス内部から
INTERNAL: 同一ログラムから可
PROTECTED INTERNAL: 
PRIVATE: クラス内部から

デフォルトのアクセシビティ

型(クラス): INTERNAL
型のメンバ: PRIVATE

付けることのできるアクセシビティ

型(クラス): public、internal

┣ 型のメンバ: public、protected、internal、protected internal、private
┃ ┃
┃ ┣ インターフェースのメソッド: 定義側は表記不要。実装側はpublicのみ
┃ ┃
┃ ┗ 抽象メソッド: private以外は大丈夫 (継承元、継承先で同じアクセシビティにする必要がある)
┃   ┗ 実装側でoverrideする必要あり。

┗ 構造体の子メンバ: public、internal、private

アクセシビティについて実験

private・protectedはクラス内部からしかアクセスできない。インスタンス生成して class.method()などの様に直接使えない。protectedは派生クラスの内部からもアクセスできる。

継承はあくまでもクラス(ひな形の)コピーであってインスンタス生成後にお互いに影響を与えない。

通常、クラスを入れ子にはしないが、クラスのスコープは越えられない。アクセシビティは誰に見せるかを定義するもので、メンバは、アクセシビティで許可した範囲からメッセージを受け付ける。

クラス定義領域では、メンバ変数同士での演算はできない。staticなクラスなら可能。クラス定義領域はインスタンス生成に評価されるため。

コンストラクタをprivateにするとインスタンス生成できないクラスになる。
基底クラスのコンストラクが実行され、次にサブクラスのコンストラクタが実行される。
上の例では、”20″のあと”This is BaseClass”と表示される。