Site cover image

Site icon imageだぶるこんぱいる

X@ToRollcake バトルプログラマーシラセにあこがれたホワイトハッカーです。

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のインスタンスを作成
MyClass myObject = new MyClass(10);

インスタンス化したオブジェクトの使用

// getNumber()メソッドを呼び出してmyNumberの値を取得
int number = myObject.getNumber();

// 結果を表示
Console.WriteLine(number); // 出力: 10

コード例のコンストラクタ

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;
    }
}

コンストラクタの利点

  • 初期化の一元化: オブジェクト生成時に必要な初期設定を忘れずに行える。
  • 安全性の向上: オブジェクトの状態が不完全なまま使用されるのを防ぐ。
  • コードの簡潔化: 初期化コードを毎回書く必要がなくなる。
© 2024 Trollcake