クラス (コンピュータ)
クラスを継承する際に、スーパークラスの振る舞いをサブクラスの振る舞いで上書きする(置き換える)ことをオーバーライドという。あるサブクラスのインスタンスがオーバーライドされた振る舞いを持つ場合、インスタンスの具体的な内容(クラス)が分からなくても、インスタンスに対してその振る舞いを実行するよう指示すれば、見かけがスーパークラスと同じ(すなわちインターフェイスが同じ)でありながら、インスタンスの実際のクラスに応じて実行される振る舞い(処理内容)を変えることができる。このようにして、見かけが一緒なのに動作が変わることをポリモーフィズム(ポリモルフィズム)/多様性/多態性/多相性などという。
オブジェクト指向プログラミングにおけるクラス(英: class)は、オブジェクトを生成するための設計図あるいはひな形に相当するものである。抽象データ型の一つ。クラスから生成したオブジェクトの実体のことをインスタンスという。
クラスには、クラス自身またはクラスのインスタンスが保持するデータと、データに関連したオブジェクトの振る舞いを記述できる。プログラミング言語によっては、それぞれにアクセス修飾子(英語版)を指定できる。統一モデリング言語 (UML) のクラス図では、データのことを「属性」、振る舞いのことを「操作」と呼ぶ。Javaなどでは、データのことを「フィールド」、振る舞いのことを「メソッド」と呼ぶ。C++などでは、データのことを「メンバー変数」、振る舞いのことを「メンバー関数」と呼ぶ。
クラスは、クラスベースのオブジェクト指向プログラミングの基本である。また、オブジェクト指向プログラミングにおけるカプセル化・継承・ポリモーフィズムなどを、クラスベースのオブジェクト指向プログラミングにおいてはクラスを必要に応じて適宜使って実装する。一方、カプセル化・継承・ポリモーフィズムなどを、プロトタイプベースのオブジェクト指向プログラミングにおいてはクラスを使わずに実装する。
プログラミング言語におけるクラスのサポートは、オーレ=ヨハン・ダールによってSimula 67において初めて導入された。この時点ではまだオブジェクト指向の概念や用語は確立されていなかったが、のちにSimulaの影響を受けたビャーネ・ストロヴストルップのC++と、アラン・ケイのSmalltalkによってオブジェクト指向が再定義されることになる。