2024-09-14
C#について[OSEPメモ]
コードの例1
public class MyClass
{
private int myNumber;
public MyClass(int aNumber)
{
this.myNumber = aNumber;
}
public getNumber()
{
return myNumber;
}
}
- public
- クラス外のコードとクラス内のコードの両方に参照と使用を許可する
- private
- インスタンス化
- クラスからオブジェクトを作成すること
- インスタンス化されたオブジェクトのみがmyNumberを参照可能(myClassの内部のみでアクセスできる)
- コードの例は、クラスが書いているだけで、インスタンス化は別のコードを書く必要がある
- コンストラクタ
- public MyClass(int aNumber)
- コンストラクタは、オブジェクト生成時に自動的に呼び出される特別なメソッドで、オブジェクトの初期化を行う
- コンストラクタはクラスと同じ名前で、戻り値の型を持たないメソッド
- クラスにコンストラクタを定義することで、オブジェクトの状態を意図した通りに初期化する
- 複数のコンストラクタを定義することで、初期化方法に柔軟性を持たせることが可能
- すべてのコードがMyClassを呼び出すことが可能
- インスタンス化されたオブジェクトだけが変数myNumberを直接参照可能
- オブジェクトの外のコードは、myNumber(クラス外から参照不可)を取得するためには、publicメソッドのgetNumberを呼び出す必要がある
なぜpublicとprivateを使うのか
- カプセル化:オブジェクトの内部のデータを隠蔽し、外部から直接変更されないようにする
- データの保護:不正な値の設定や予期しない変更を防ぐことで、データの整合性を保つ
インスタンス化の例
MyClass myObject = new MyClass(10);
インスタンス化したオブジェクトの使用
int number = myObject.getNumber();
Console.WriteLine(number);
コード例のコンストラクタ
public MyClass(int aNumber)
{
this.myNumber = aNumber;
}
複数のコンストラクタ(オーバーロード)の例
public class MyClass
{
private int myNumber;
public MyClass()
{
this.myNumber = 0;
}
public MyClass(int aNumber)
{
this.myNumber = aNumber;
}
}
コンストラクタの利点
- 初期化の一元化: オブジェクト生成時に必要な初期設定を忘れずに行える。
- 安全性の向上: オブジェクトの状態が不完全なまま使用されるのを防ぐ。
- コードの簡潔化: 初期化コードを毎回書く必要がなくなる。