抽象化と継承の主な違いは、抽象化では内部の詳細を隠してユーザーに機能のみを表示することができ、継承では既に存在するクラスのプロパティやメソッドを使用することができる点です。
オブジェクト指向プログラミング(OOP)は、主要なプログラミングパラダイムです。
オブジェクトの集合を使って実世界のシナリオを簡単にモデル化することができる。
JavaやC#など、多くのプログラミング言語がOOPをサポートしている。
クラスとオブジェクトは、OOPプログラムの構成要素です。
クラスは設計図であり、オブジェクトはクラスのインスタンスです。
さらに、OOPの柱となるものがあります。
そのうちの2つが、抽象化と継承です。
抽象化とは
抽象化とは、内部の詳細を隠蔽し、機能のみをユーザーに表示する手法です。
言い換えれば、ユーザーや外部は内部の実装の詳細を見ません。
その代わり、機能だけを見ることができる。
抽象化の考え方は、次のような例と似ている。
例えば、リモコンを想定する。
これは操作するためのボタン群から構成されている。
ユーザーは、チャンネルを変えたり、音量を上げたり、明るさを変えたりすることができます。
ユーザーは、リモコンの内部回路を知らなくても操作できる。
抽象化もそれと同じようなものだ。
Javaなどのプログラミング言語は、Abstractionをサポートしている。
プログラマは、抽象クラスやインターフェースといった概念を用いて、抽象化を実現することができる。
まず、抽象クラスは、抽象メソッドと非抽象メソッドから構成されることができます。
抽象クラスを継承するクラスは、抽象メソッドの実装を提供しなければならない。
次に、インターフェースは抽象的なメソッドの集合体です。
抽象的でないメソッドは持っていません。
したがって,インターフェイスを実装するクラスは,インターフェイス内のすべての抽象メソッドに対する実装またはメソッド定義を提供しなければなりません.全体として、抽象化はシステムの複雑さを軽減するのに役立ちます。
継承とは何か
継承とは、既存のクラスのプロパティやメソッドを新しいクラスで使用する手法です。
既存のクラスは親クラスまたはスーパークラスであり、新しいクラスは子クラスまたはサブクラスです。
開発者は、最初からコードを書く必要はありません。
開発者は、最初からコードを書く必要はなく、既にあるコードを使い、残りを開発すればよいのです。
したがって、継承はコードの再利用を可能にする。
継承にはさまざまな種類があります。
以下はその例です。
単一レベル継承 – AとBが2つのクラスで、BがAを継承する場合、それは単一レベル継承です。
多段階継承 – 中間クラスが存在する。
A、B、Cという3つのクラスがあり、BはAから、CはBから継承する。
多重継承 – A、B、Cの3つのクラスがあり、CがAとBの両方から継承する場合、多重継承となる。
階層継承 – A、B、Cの3つのクラスがあり、BとCがAを継承する場合、階層継承となる。
ハイブリッド継承 – 多階層継承と多重継承を組み合わせたもの。
抽象化と継承の違い
定義
抽象化とは、実装の詳細を隠蔽し、機能のみをユーザーに見せるOOPの概念です。
これに対して継承は、既存のクラスのプロパティやメソッドを利用して新しいクラスを作成する方法論です。
したがって、これは抽象化と継承の主な違いを反映している。
主な使用方法
また、抽象化と継承のもう一つの違いは、抽象化はコードの複雑さを軽減するのに役立ち、継承はコードの再利用性を向上させるのに役立つということである。
結論
全体として、抽象化と継承は全く異なるOOPの概念であり、それぞれ異なる用途を提供します。
抽象化と継承の主な違いは、抽象化によって内部の詳細を隠し、ユーザーに機能だけを見せることができるのに対し、継承によって既存のクラスのプロパティやメソッドを使用することができる点です。