カプセル化とstatic
カプセル化は、オブジェクトの内部状態と操作方法をまとめ、外部から不適切に変更されないようにする考え方です。
publicとprivate
public: クラスの外からアクセスできるprivate: 定義したクラスの内部からだけアクセスできる
class Counter
{
private int count = 0;
public int Count
{
get { return count; }
}
public void Increment()
{
count++;
}
}
外部から count を直接書き換えることはできません。値を増やしたい場合は、公開した Increment メソッドを呼び出します。
class Program
{
static void Main()
{
Counter counter = new Counter();
counter.Increment();
counter.Increment();
Console.WriteLine(counter.Count); // 2
}
}
static
static を付けたメンバーは、個々のインスタンスではなく型そのものに属します。
class MathTools
{
public static int Double(int value)
{
return value * 2;
}
}
class Program
{
static void Main()
{
int result = MathTools.Double(10);
Console.WriteLine(result);
}
}
インスタンスごとに異なる状態は通常のフィールドやプロパティで、すべてのインスタンスで共有する情報やインスタンスに依存しない処理はstaticで表現できます。