クラスの階層とは何ですか?
クラスの分類法とも呼ばれるクラスの階層は、同様のことを行うために継承を通じて接続されている関連クラスのグループです。階層の最上部は、以下の他のすべてのクラスが導出される単一の基本クラスであるか、階層には、1つ以上の派生クラスで機能が後で合流する複数のベースクラスを持つことができます。クラス間の関係は木として示すことができ、大規模な分類法の中の各小さな木は階層と見なすことができます。
すべてのクラス階層が複数のルートを持つことができるわけではなく、クラス階層の構造は、それが書かれている言語に大きく依存します。C++は、複雑な継承を許可します。一方、Java®は単一の継承に限定されているため、通常、クラスの関係はよりシンプルで、単一の根を持つ比較的自己完結型の木として構築されています。インターフェイス継承cJava®のクラス階層に複雑さを追加しますが、インターフェイスは、木を融合するような複雑なフレームワークではほとんど呼ばれることはありません。
クラスの階層のコンポーネントは、継承に関して言語のルールが常に守られている限り、タイプと機能が異なる場合があります。階層内のクラスは、公開、保護された、抽象的、具体的、または仮想である可能性があります。インターフェイス、グローバル機能、および友人も使用できます。コンピューター言語に応じて、これらのタイプのいくつかは、他のタイプよりも継承する方が良いかもしれません。一般に、階層は非常に柔軟であり、多くの目的で多くの方法で使用できます。
特定の種類のクラスを階層に置く必要がある場所に関する難しいルールはありません。クラスは、上記のタイプのいずれかになる可能性があります。一般に、派生していない階層の最後のクラスその下のクラスは、公開されていて具体的でなければなりません。ただし、純粋に抽象的なクラスの階層も存在する可能性があるため、これは単なる経験則です。
クラスの階層は、コードを整理し、機能をカプセル化するための便利なツールになりますが、階層を深く掘り下げることで、それを明確にして維持しやすくするのではなく、コードを実際に混乱させることがあります。多くのクラス間に堅牢な関係を構築するには、ある程度の先見性が必要です。最初はコードを多くの小片に分割する方が簡単かもしれませんが、それらの小さな部分は後で処理するのがより困難になるかもしれません。適切に構築されると、クラスの階層は、開発者とユーザーの両方がクラスの仕組みを決定するのに役立ちます。メンテナンスと明確さを念頭に置いて構築されている場合、多くのレベルの継承は、振り返って理解するのを混乱させることができます。