C#の入れ子クラス(ネストクラス)とは?基本構文と実装例を解説
入れ子クラス(ネストクラス)とは
入れ子クラス(Nested Class/ネストクラス)とは、別のクラス(外側のクラス=エンクロージングクラス)の内部で宣言されたクラスのことです。入れ子クラスは外側のクラスの一つのメンバーとして扱われ、内部クラスと外部クラスという関係性を持ちます。
ただし注意が必要なのは、外側のクラスのメンバーからは、入れ子クラスのメンバーに直接アクセスできないという点です。入れ子クラスはあくまで独立した型として振る舞います。
C#における入れ子クラスのコード例
それでは、C#で入れ子クラスを定義する基本的なコード例を見てみましょう。以下の例では、クラス「Two」が入れ子クラスに該当します。
サンプルコード
class One {
public int num1;
public class Two {
public int num2;
}
}
class Demo {
static void Main() {
One x = new One();
x.num1++;
One.Two xy = new One.Two();
xy.num2++;
}
}コードの解説
この例では、クラスTwoがクラスOneの宣言ブロックの内部に記述されています。このように外側のクラスに囲まれた形で宣言されたクラスが、入れ子クラスです。
ポイントは以下の通りです。
- クラスTwoはクラスOneの内部で宣言されているため、入れ子クラスとして扱われる。
- クラスTwoにはpublicアクセス修飾子が付与されているため、クラスOneのスコープ外からでもアクセスできる。
- 外部から利用する際は、「One.Two」のように外側のクラス名を修飾子として指定してインスタンス化する。
もしアクセス修飾子をprivateに変更すれば、クラスTwoはクラスOneの内部からしか利用できなくなり、カプセル化を強化できます。このように、入れ子クラスは特定のクラスに強く関連する補助的な型を整理し、名前空間を汚さずにまとめるために活用されます。
-
C#のConsoleクラスとは?主要プロパティの使い方を実例付きで解説
C#のConsoleクラスは、コンソールアプリケーションにおける標準入力・標準出力・標準エラー出力の各ストリームを表すクラスです。テキストの表示や入力の読み取りだけでなく、文字色や背景色の変更、カーソル位置やサイズの制御など、コンソール操作に関するさまざまな機能が提供されています。ここでは、Consoleクラスの代表的なプロパティの使い方を、サンプルコードと実行結果とあわせて解説します。Console.CursorLeftプロパティコンソール上のカーソル位置(左端から数えた列位置)を変更するには、Console.CursorLeftプロパティを使用します。サンプルコードusing System
-
Javaでメンバー内部クラスをインスタンス化する2つの方法とルールを解説
あるクラスの中に、メソッドの外側で宣言されたクラスはメンバー内部クラス(Member Inner Class)と呼ばれます。メンバー内部クラスをインスタンス化する方法は、主に次の2つがあります。外部クラスの内部から呼び出す外部クラスの外部から呼び出す内部クラスに関するルール外部クラス(内部クラスを含むクラス)は、そのコード内であれば、いくつでも自由に内部クラスのオブジェクトをインスタンス化できます。内部クラスがpublicであり、かつ外部クラスもpublicである場合、まったく無関係な別のクラスからでも内部クラスのインスタンスを作成できます。外部クラスのオブジェクトが生成されても、内部クラスの