Share via


クラス

オブジェクト指向プログラミングでは、クラスはオブジェクトが実行できる操作 (メソッド、イベント、またはプロパティ) を定義し、オブジェクトの状態を保持する値 (フィールド) を定義します。通常、クラスには定義と実装の両方が含まれますが、実装を持たないメンバを含むこともできます。

クラスのインスタンスはオブジェクトです。オブジェクトの機能にアクセスするには、そのオブジェクトのメソッドを呼び出すか、オブジェクトのプロパティ、イベント、およびフィールドにアクセスします。

ランタイムでクラスに適用できる特性のいくつかを次の表で説明します。Attribute クラスを通じて適用できる特性は、この一覧には含まれていません。使用言語によっては、この一覧に示したすべての特性を使用できるとは限りません。

特性 説明
sealed 型から別の型を派生できないことを示します。
implements クラスが、インターフェイスのメンバの実装を提供することによって、1 つ以上のインターフェイスを使用することを示します。
abstract クラスのインスタンスを作成できないことを示します。クラスを使用するには、このクラスから別のクラスを派生させる必要があります。
inherits クラスのインスタンスを、基本クラスが指定されている任意の場所で使用できることを示します。基本クラスから継承する派生クラスは、基本クラスによって提供されるすべての仮想メソッドの実装を使用できます。または、それらの仮想メソッドを、派生クラスで独自の実装によってオーバーライドできます。
exported または not exported クラスが定義されているアセンブリの外部から、そのクラスを参照できるかどうかを示します。最上位のクラスにだけ適用されます。

入れ子にされたクラスにも、メンバ特性を適用できます。詳細については、「型のメンバ」を参照してください。

実装を持たないクラス メンバは抽象メンバです。1 つ以上の抽象メンバを持つクラスは、それ自体が抽象クラスとなり、新しいインスタンスを作成できません。ランタイムに対応する言語の中には、抽象メンバを持たないクラスでも抽象クラスとしてマークできるものもあります。抽象クラスは、派生クラスが必要に応じて継承したりオーバーライドしたりできる基本的な一連の機能をカプセル化する必要がある場合に使用できます。抽象クラスでないクラスを具象クラスと呼びます。

クラスは任意の数のインターフェイスを実装できますが、1 つの基本クラスからしか継承できません。すべてのクラスには少なくとも 1 つのコンストラクタが必要で、このコンストラクタにより、各クラスの新しいインスタンスが初期化されます。

ランタイムをサポートする各言語では、クラスまたはクラス メンバに特定の属性が適用されていることを示すことができます。使用言語で必要とされる構文を使用すると、クラスとそのメンバの特性がクラスの実装と共に (メタデータとして) 確実に格納されます。

参照

共通型システム | インターフェイス | System.Object | メタデータと自己言及的なコンポーネント