カプセル化と抽象化の簡単な定義を次に示します。
抽象化:
Javaでの抽象化のプロセスは、特定の詳細を隠し、オブジェクトの本質的な機能のみを表示するために使用されます。つまり、オブジェクト(インターフェース)の外側のビューを扱います。さまざまなサイトでこれについて私が見る唯一の良い例は、インターフェースです。
カプセル化:
基本的には、private、public、protectedなどの修飾子を使用してオブジェクトの状態を非表示にすることです。必要な場合にのみ、publicメソッドを通じて状態を公開します。
どのように我々は修飾子を達成private
、public
また何もなく、抽象概念ではありませんアウト側の世界から不必要な詳細を隠します
したがって、上記の説明から、カプセル化は抽象化の一部であるか、抽象化のサブセットであると言えます。しかし、抽象化のみを扱うことができるのに、なぜカプセル化用語が発明されたのでしょうか。私はそれらを区別するいくつかの大きな違いがあるはずだと確信していますが、ネット上のほとんどの資料は、両方ともほとんど同じことを言っています。
この質問は以前にもこのフォーラムで提起されていますが、私は具体的な疑問を持って再度投稿しています。一部の回答では、抽象化は概念であり、カプセル化は実装であるとも述べています。しかし、私はこれを購入しません。それが真実であれば、これら2つの異なる概念が私たちを混乱させるために提供されていると考えることができます。
更新:- 5年後、私は自分の答えを思いつきました。これは、この投稿と以下の答えに基づく要点です。
private
public
、インスタンスのデータを保護することをお勧めするため、のようなアクセス指定子を使用しても実現できます。アクセス指定子は、情報/データの非表示のみを提供するためです。
An 'abstraction' (noun) is a concept that acts as a super-categorical noun for all subordinate concepts, and connects any related concepts as a group, field, or category.