抽象クラスとは?ちゅうしょうくらす
抽象クラスとは、それ自身ではインスタンスを生成できず、サブクラスに継承させて使う前提で定義するクラスである。共通の属性や実装済みのメソッドを親に置き、サブクラスごとに異なる処理だけを抽象メソッドとして宣言して実装を強制する。呼び出し側は親の型で扱えるため、種類が増えても分岐が増えない。インタフェースとの違いが問われる。
最終更新:2026-10-06
情報処理安全確保支援士を最短で暗記・合格する →背景
似た処理を持つクラスを別々に書くとコピーが増え、修正漏れが起きる。かといって共通の親を普通のクラスにすると、未完成のまま実体化できてしまう。「共通部分は持つが単体では使えない」という中間の型を言語に用意したのが抽象クラスで、SOLID原則のうち開放・閉鎖の原則を実現する道具として設計技法の節で問われる。
具体例
Javaの標準ライブラリjava.io.InputStreamは抽象クラスで、1バイト読むread()だけが抽象メソッドである。FileInputStreamやByteArrayInputStreamはread()だけを実装し、複数バイトをまとめて読むread(byte[])などは親の実装をそのまま使う。呼び出し側はInputStream型で受けるため、ファイルでもネットワークでも同じコードで処理できる。
試験での引っ掛け
インタフェースと混同しやすい。抽象クラスは実装済みメソッドやフィールドを持て、Javaでは1つしか継承できない。インタフェースは原則として実装を持たず、複数実装できる。抽象メソッドを1つも持たない抽象クラスも定義でき、「抽象メソッドがあるから抽象クラス」という関係は逆向きである。
関連用語
出典・参考
公式シラバスの4 開発技術 > 2. 設計 > (9) ソフトウェア設計手法に掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。