抽象クラス
直接インスタンス化できず、継承してのみ使えるクラス。一部だけ実装を持ち、残りはサブクラスに実装を強制する。
インターフェースとの違いは、抽象クラスならフィールドや部分的な実装を持てる点だ。インターフェースはメソッドのシグネチャだけを持つ。Javaでは abstract class と abstract メソッド、C++では純粋仮想関数 = 0、Pythonでは ABC と @abstractmethod を使う。Rustには継承自体がなく、代わりにトレイトを使う。