1. ホーム
  2. oop

[解決済み] カプセル化と抽象化の違い

2022-07-24 12:46:13

質問

今日、面接を受けました。の質問がありました。 OOP との違いについて、です。 カプセル化 &です。 抽象化 ?

私は自分の知識として、次のように答えました。 カプセル化 という1つのユニットにデータメンバとメンバ関数をバインドすることです。 クラス . 一方 抽象化 は、基本的に実装の複雑さを隠蔽し、ユーザーにアクセスのしやすさを提供することです。私は、彼女が私の答えに納得してくれると思った。しかし、彼女は、もし両方とも情報を隠すことが目的なら、この2つの実際の違いは何なのか、と質問してきました。私は何も答えられませんでした。

この質問をする前に、StackOverFlow の他のスレッドを読んで、この 2 つの違いについて調べました。 OOP の概念の違いについて、StackOverFlow の他のスレッドを読みました。しかし、私は面接官を説得する立場に自分自身を見つけることはありません。

どなたか、一番簡単な例で正当化していただけませんか?

どのように解決するのですか?

カプセル化 頻繁に変更される可能性のある変数や実装を隠します。 クラスで を使用して、部外者が直接アクセスできないようにします。ゲッターメソッドやセッターメソッドを介してアクセスする必要があります。

抽象化 も何かを隠すために使われますが、その中で より高度に (クラス、インターフェース) . 抽象クラス(またはインターフェイス)を使用するクライアントは、それが何であったかを気にしない、彼らはそれが何ができるかを知る必要があります。