2012-02-17 6 views
1

これは基本的ですが、思慮深い質問です。私は多くのインタビューで遭遇しますなぜ抽象クラスとインターフェイスを実際に欲しいのですか?私たちは単純に継承で実装できます。 (技術的な機能を作り、それをオーバーライドすることで言って).whatは抽象クラスとOOPSアブストラクトとインターフェイスの使用

のインターフェイスを作成せずに残っ​​てしまうのおかげ

+0

[インターフェイスと抽象クラスの違いは何ですか?](http://stackoverflow.com/questions/1913098/what-is-the-difference-between-an-interface-and-abstract-クラス) – Sarfraz

+0

@Sarfraz:私はそれが使用できるリアルタイムシナリオを望みます。 –

答えて

3

抽象クラスを使用すると、コードの残りの部分に基礎石を持たせることができます。部分的に実装されたクラスを作成し、ユーザーが要件に固有の具体的なインスタンスを作成できるようにすることができます。共通の機能は、抽象クラスにとどまります。 現実世界の類推はレンタカーショップです。彼らは「車」を雇う。 「車」という概念は抽象クラスであり、雇用や返却を可能にするさまざまな方法や、保険グループや日々の料金などのプロパティを持つことができます。お客様は雇われたショップや賃貸車'。彼らはフォードフォーカス、メルセデス、スカーダファビアなどを雇うだろう。したがって、これらは抽象クラスの具体的なインスタンスであり、 'car'から派生した特定のクラスを持つオブジェクト指向システムではよく表現されます。一方、インタフェースは多形を許可します。
これは、あるクラスのオブジェクトが他のクラスのように動作するようになるときです。私は車を運転する男です。私は(他の多くのことをしているように)「ドライバー」オブジェクトではありませんが、私は運転免許の詳細などにアクセスできる「ドライバー」インターフェースを備えていると考えられます。

+0

:これはすばらしい説明です。 –

+0

:これらの概念を読んでもっと多くの例やURLを入手できますか? –

+0

私の頭の上から外れません。私はOOPを一度教えなければなりませんでした。 – deadlyvices

1

抽象クラスにはないインタフェースに違いがいくつかの機能の部分的な実装が含まれている可能性がありすべての実装を含みますが、純粋な仮想メソッド宣言だけを含みます。インターフェイスを使用する基本的な理由は、クラスとのやりとり方法を除いてクラスについて何も知らない場合です(これはコードに抽象化をもたらします)。つまり、abstactクラスよりも抽象的なインターフェイスになります。一方、Abstactクラスは、物理的なオブジェクトの部分的な表現に過ぎません。また、C++のインターフェイスでは、抽象クラスまたは単純クラスとの違いを持つdllからのエクスポートが可能です。

0

これはオブジェクト指向の理論と実践の非常に基本的な課題です。なぜ私たちは抽象クラスを持っているのか、なぜインターフェースを持っているのか、2つの違いがあるのか​​、などです。それには2つの側面があります。私はそれを「機械的」と「必須」と呼んでいます。これらの概念を説明するとき、通常は機械的な側面が強調されています(構文上の違い、インスタンス化できるかどうかなど)。これらは重要ですが、その重要性を理解することが重要です。

私はこの記事の私の見解を私のウェブサイトで入手できる記事で説明しました。

http://nazar-merza.com/

注:サイトが新しく、まだ建設中であるので、そこに多くの投稿はまだありませんが、すぐに私はオブジェクト指向の重要な側面にいくつかの記事を掲載します。

関連する問題