- ベストアンサー
インターフェース
インターフェースについて学ぼうと思っているのですが、 どうもいまいち何がなんだかわからなくなっています。 インターフェースはクラスによって実装され、 実装クラスはインターフェースで宣言されている 抽象メソッドを実行する とあるのですが、実装とは何ですか? 抽象メソッドとは何ですか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Javaで言う「インターフェース」というのは、要は「仕様」のことだと思って下さい。 オブジェクト指向の背景の一つに、仕様と実装の分離という考え方があります。 ソフトウェアのモジュールをどういう仕様で作るかということと実際にどのように 作るかということを切り離すことにより、ソフトウェアを部品として扱うことが 可能になるという考え方です。 日常的な世界の比喩で考えてみましょう。CDプレーヤーがあったとします。 そのプレーヤーにかけるCDは、どのメーカーのものを使うか。普通は考えませんよね。 CDの規格が決まっていますから、それに合わせて実際の製品を作るだけです。 規格に合ってさえいれば、A社のCDでもB社のCDでも同じようにプレーヤーに かけることができるわけです。プレーヤーのメーカーは、CDの「実装」を気に しなくてよいわけです。 Javaの場合も同様です。インターフェース(仕様)を決めてさえおけば、メソッドの 呼び出し側も呼び出される側も、相手側を気にしなくてすみます。 インターフェースでは、実際の動作を記述せずに、メソッドの仕様だけを記述します。 動作が記述されている場合と区別して、これを「抽象メソッド」と呼びます。つまり 抽象メソッドというのはメソッドの仕様です。仕様ですから、実際に動作はしません。 動作するのは、それを「実装」したメソッドということになります。 「抽象メソッドを実行する」と書いてあったのですか?何だか不思議な言い方だな。 この表現は気にしないで先へ進みましょう。
その他の回答 (1)
- 100Gold
- ベストアンサー率27% (284/1018)
例で説明します。 プリンタークラスとディスプレイクラスというクラスがあるとします。 プリンタークラスはプリントアウトメソッドをもっています。 ディスプレイクラスはディスプレイ表示メソッドをもっています。 ここで抽象メソッドである出力メソッドを両方のクラスに実装します。 そのためにプリンタークラスとディスプレイクラスのそれぞれのクラスを拡張した、プリンターexクラスとディスプレイexクラスを作ります。これらを作成するときは元のクラスを継承させて作るようにしてください。 プリンターexクラスの出力メソッドはプリントアウトメソッドを実行します。 ディスプレイexクラスの出力メソッドはディスプレイ表示メソッドを実行します。 つまり実装とは実際の動作を定義すること。 抽象メソッドとは各クラスがそれぞれのクラスにふさわしい動作を行えるようになっている共通の動作です。 これを実装しておくと相手がプリンターexクラスであってもディスプレイexクラスであってもそれを意識せずにとにかく出力メソッドを実行してやれば良いようになるのです。