クラスの種類 いつくかある

基本文法

クラス

クラスは、振る舞い(メソッド)と状態(フィールド)とを構成要素とします。
オブジェクト指向では中心的概念を担いました。

class SampleClass
{
    // 状態(フィールド)
    private int _number;
    // 振る舞い(メソッド)
    public int GetNumber() => _number;
}

インナークラス

クラスの中に定義されたクラス。
入れ子にされた型(nested types)ともいう。
使用用途はあんまりない。

class ParentClass
{
    class ChildClass
    {
    }
}

部分クラス

一つのクラスを複数のファイルに定義することが出来る。
C#ではファイル名とクラス名や配置場所とに関係はない。

// SampleClass1.cs ファイルに定義
public partial class SampleClass
{
    public void DoSomething()
    {
    }
}

// SampleClass2.cs ファイルに定義
public partial class SampleClass
{
    public void DoAnything()
    {
    }
}

静的クラス

静的メンバのみで定義される。
シングルトンであり、インスタンス化せずに使える。

static class StaticClass
{
    public static int Number { get; set; }
 
    public static int Add(int x , int y) => x + y;
}

抽象クラス

new演算子などでインスタンス化できない。(ビルドエラーとなる)
継承元クラスとして使われることが前提。
実処理をもつメソッドの定義が出来る。

abstract class AbstractSampleClass
{
    protected int _number;

    public int GetNumber()=> _number;
}

シールドクラス

このクラスを親クラスとした派生クラスが定義できない。
(ビルドエラーとなります)

sealed class SealdedSampleClass
{
    public int Number { get; set; }
}