スーパークラス【superclass】親クラス
概要

サブクラスはスーパークラスが持つプロパティ(属性)とメソッド(操作)をそのまま引き継ぐ。開発者はスーパークラスにない独自の要素だけを追加定義すればよく、共通の仕様を繰り返し記述する手間が省ける。また、スーパークラスで定義済みのメソッドをサブクラス側で同じ名前で再定義し、処理内容を上書きする「オーバーライド」(override)も可能である。
多くの言語では、サブクラスをさらにスーパークラスとして別のサブクラスを派生させる「多段継承」が可能である。こうして形成される継承関係は木構造をなし、根本に近いクラスほど抽象的・汎用的な仕様を持ち、派生を重ねるにつれて機能が追加され、より具体的・個別的な仕様へと変化していく。例えば、「動物」クラスを頂点に「哺乳類」→「犬」→「秋田犬」へと派生していくイメージである。
継承(inheritance)は、検証済みのコードを再利用することで開発効率を高め、バグの混入を防ぐ目的で導入された仕組みである。共通する性質をスーパークラスにまとめておくことで、プログラム全体の変更や拡張が容易になる。一方、スーパークラスの仕様を変更するとすべてのサブクラスに影響が及ぶため、継承階層が深く複雑になりすぎると保守が難しくなる面もある。
言語ごとの仕様として、複数のスーパークラスを同時に持てる「多重継承」を認める言語と、単一のスーパークラスからしか継承できない「単一継承」に限定する言語がある。C++言語やPythonは多重継承をサポートするが、同名メソッドの解決順序など複雑な問題が生じる場合があり、言語ごとに異なる仕組みで対処している。JavaやC#は単一継承のみを採用し、すべてのクラスの最上位に共通の基底クラス(Javaでは「Object」、.NETでは「System.Object」)を設けることで、継承ツリー全体に共通の振る舞いを持たせる構造となっている。
関連用語
他の辞典等による「スーパークラス」の解説 (外部サイト)
- ウィキペディア「スーパークラス」
- JavaA2Z「スーパークラス」
- Programming Place Plus 用語集「スーパークラス」
- Techopedia (英語)「Base Class」
- PC Magazine (英語)「superclass」