• 締切済み

interfaceを実装するとは?

interfaceを実装するとはどういうことですか? abstractはクラスの継承で 学校 -abstract(拡張)― 教室 ―abstract(拡張)― 生徒 と機能を細分化するものとわかりました。 インターフェースってなんですか・・

みんなの回答

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.3

>AppletContextインターフェースにあるgetAudioClipメソッドを使うにはどうすればいいですか 例えば、AppletクラスのgetAppletContextメソッドで取得できます。 class myClass extends Applet {   public void aaa() {     AppletContext x = getAppletContext();     URL u = new URL("~");     AudioClip c = x.getAudioClip(u); 変数xにはあるクラスのインスタンスが代入されます。このクラスの 名前はAppletContextではありませんが、AppletContextを実装する ので、getAudioClip()メソッドを持っています(いなければならない)。 インターフェース、抽象クラスなどの考え方は一度、分かっている 人に徹底的に教えてもらったほうが良いでしょう。文章だと、理解 するのが、結構大変です。(説明する方も難しい)

rescue99
質問者

お礼

ありがとうございます。 独学なので、教えてくれる人がいないんです。 1冊の本を読んでも理解できないので、いろいろな本を読んで少しずつ理解していってる状態です。 回答を教えていただきありがとうございます。 URL u = new URL("~"); AudioClip c = x.getAudioClip(u); 引数はインスタンスしてないとダメなんでしょうか・・ インスタンス.メソッドの引数がインスタンス・・・理解できません・・・ 想像以上にむずかしいです。 簡単なソフトを作るレベルでも相当だと感じます。 自分が頭が悪すぎるんでしょうか。。。あまりに理解できなさすぎて萎えます。。

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

abstract は抽象クラスや抽象メソッドに付ける修飾語で、「継承」 ではありません。抽象クラスもインターフェースも似たような使い 方ををしますが、「実装」する場合、抽象クラスはextendsしますが、 インターフェースはimplementsします。 例えば、「学校」というインターフェースには「教室」、「生徒」 というメソッドがあるとします。 現実の学校、例えば、私立○○中学高等学校が「学校」という インターフェースを持つためには必ず「教室」、「生徒」という メソッドを持つ必要があります。これらのメソッドは何らかの 具体的な処置が記述されます。この「具体的な処理を記述する」が 「実装」にあたります。 一方、抽象クラスは規定の処理を記述できるので、特に変更する 必要が無ければ、継承したクラスではメソッドを持たなくてもよい のです。但し、継承なので複数のクラスを継承できません。 これに対し、インターフェースは複数指定が可能です。 例えば、「私立」というインターフェースがあり、「理事長」という メソッドがあるとすると、私立○○中学高等学校は「学校」と、「私立」 という二つのインターフェースを実装することができます。 区立第1中学は公立なので、理事長がいないため、「学校」という インターフェースしか実装できない、といった具合です。 あるメソッドが「学校」というインターフェースをパラメータに する時、これを実装する私立○○中学高等学校も区立第1中学も パラメータに指定することができます。 類似したクラスが多数作られ、共通処理が幾つも予想される場合、 共通項目を集めてインターフェース、あるいは抽象クラスとする のが普通です。どちらを使うかは「状況による」としか言えません。

rescue99
質問者

お礼

ありがとうございます。 たとえば、Java Platform Standard Ed.6にあるjava.appletパッケージを使うとします。 そこにはAppletContextインターフェースとgetAudioClipクラスがあります。 AppletContextインターフェースにあるgetAudioClipメソッドを使うにはどうすればいいですか? AudioClip getAudioClip(URL url) パラメータ:url-オーディオクリップの位置を示す絶対URL 戻り値:指定されたURLにあるオーディオクリップ ライブラリ一覧の説明を見ても使い方がわからないので途方にくれています。 ――――――――――――――――――――――――――――――――――――― インターフェイスだけだと機能しないので、なんらかのメソッドを記載することをインターフェイスを実装するという。 インターフェイスは何らかのメソッドを持つ必要がある。 インターフェイスは複数継承することができる。 A←C 親が複数=インターフェイス(inplement) B←┘ A←B 親は1つ=抽象クラス(abstract) ↑ C └-┘ 抽象クラスはメソッドを書かなくても、抽象クラス自身が持つことができる。 AppletContextインターフェース ― getAudioClipメソッド 学校インターフェイス―公立抽象クラス―理事長・教室・教師・生徒メソッド           └私立抽象クラス―校長・教室・教師・生徒メソッド 実装するとなるとこんな感じですか????

rescue99
質問者

補足

間違えていました。多分、こういうこと??? 学校抽象クラス―公立インターフェイス―理事長クラス                    ↑                    |教室・教師・生徒インターフェイス―教室・教師・生徒クラス                    ↓        └私立インターフェイス―校長クラス                    

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

その「-abstract(拡張)―」が何を意味するのかは知らないけど, なんとなく激しく勘違いしてる気もする. 「機能を細分化する」ってのは的を外してるような....

rescue99
質問者

お礼

ありがとうございます。 1つのクラスで書いてもいいですが、機能をわかりやすくするのに抽象クラスを使うのかと思いました。 たとえば、 学校抽象クラス-学年抽象クラス-生徒抽象クラス-個人情報クラス                       -成績クラス                       -出席率クラス わかりやすいクラスにするためのものが、 インターフェイス(implement)・抽象クラス(abstract)かと思っています。 的はずれですか????

rescue99
質問者

補足

#2の補足です。 #1の補足に失敗しました。これが正解です。 学校抽象クラス―公立抽象クラス―理事長クラス                    ↑                    |教室・教師・生徒インターフェイス―教室・教師・生徒クラス                    ↓          └私立抽象クラス―校長クラス 実装するにはこうなりますか?

関連するQ&A

専門家に質問してみよう