interfaceを実装するとはどういうことですか?

abstractはクラスの継承で

学校 -abstract(拡張)― 教室 ―abstract(拡張)― 生徒

と機能を細分化するものとわかりました。

インターフェースってなんですか・・

A 回答 (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()メソッドを持っています(いなければならない)。
インターフェース、抽象クラスなどの考え方は一度、分かっている
人に徹底的に教えてもらったほうが良いでしょう。文章だと、理解
するのが、結構大変です。(説明する方も難しい)
    • good
    • 0
この回答へのお礼

ありがとうございます。

独学なので、教えてくれる人がいないんです。
1冊の本を読んでも理解できないので、いろいろな本を読んで少しずつ理解していってる状態です。

回答を教えていただきありがとうございます。

URL u = new URL("~");
AudioClip c = x.getAudioClip(u);

引数はインスタンスしてないとダメなんでしょうか・・

インスタンス.メソッドの引数がインスタンス・・・理解できません・・・

想像以上にむずかしいです。
簡単なソフトを作るレベルでも相当だと感じます。
自分が頭が悪すぎるんでしょうか。。。あまりに理解できなさすぎて萎えます。。

お礼日時:2009/05/16 15:14

abstract は抽象クラスや抽象メソッドに付ける修飾語で、「継承」


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

あるメソッドが「学校」というインターフェースをパラメータに
する時、これを実装する私立○○中学高等学校も区立第1中学も
パラメータに指定することができます。

類似したクラスが多数作られ、共通処理が幾つも予想される場合、
共通項目を集めてインターフェース、あるいは抽象クラスとする
のが普通です。どちらを使うかは「状況による」としか言えません。

この回答への補足

間違えていました。多分、こういうこと???

学校抽象クラス―公立インターフェイス―理事長クラス
                   ↑
                   |教室・教師・生徒インターフェイス―教室・教師・生徒クラス
                   ↓
       └私立インターフェイス―校長クラス
                   

補足日時:2009/05/15 19:14
    • good
    • 0
この回答へのお礼

ありがとうございます。

たとえば、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メソッド

学校インターフェイス―公立抽象クラス―理事長・教室・教師・生徒メソッド
          └私立抽象クラス―校長・教室・教師・生徒メソッド

実装するとなるとこんな感じですか????

お礼日時:2009/05/15 19:02

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

」ってのは的を外してるような....

この回答への補足

#2の補足です。
#1の補足に失敗しました。これが正解です。

学校抽象クラス―公立抽象クラス―理事長クラス
                   ↑
                   |教室・教師・生徒インターフェイス―教室・教師・生徒クラス
                   ↓
         └私立抽象クラス―校長クラス

実装するにはこうなりますか?

補足日時:2009/05/15 19:17
    • good
    • 0
この回答へのお礼

ありがとうございます。

1つのクラスで書いてもいいですが、機能をわかりやすくするのに抽象クラスを使うのかと思いました。

たとえば、
学校抽象クラス-学年抽象クラス-生徒抽象クラス-個人情報クラス
                      -成績クラス
                      -出席率クラス

わかりやすいクラスにするためのものが、
インターフェイス(implement)・抽象クラス(abstract)かと思っています。
的はずれですか????

お礼日時:2009/05/15 19:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報