///宣言 interface B{ } class A implments B{ } ///実行メソッド内 B a =new A();
インターフェースの方に実装したクラスを暗黙型変換するデザインパターンが
あることがSilverの教本にかいてあったのですが実用が思いつかなかったので
これの実際の使用用途を教えて下さい。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/13 13:03
回答2件
0
この例からだと範囲が広すぎてどう言えば良いのか困りますが、世の中でインターフェイス使っているコードのほぼほぼ全部実用事例だと思って差し支えないんじゃないでしょうか。
「java インターフェイス メリット」あたりでググると最初の方に出てくると思いますが
【Java】「interface」のメリットと使い所を考えてみた
投稿2019/06/13 22:43
総合スコア8949
0
ベストアンサー
それはデザインパターンだと教科書に書いていましたか?
ただ、インターフェイスを実装しているだけのように見えます。
インターフェイスについての話題は以前にもしたので、過去に書いたサンプルを転記します。
定義
java
1interface 楽器 { 2 void play(int 音階); 3} 4 5class ピアノ implements 楽器 { 6 public void play(String 音階) { 7 音階に対応する鍵盤を押す; 8 } 9} 10 11class ギター implements 楽器 { 12 public void play(String 音階){ 13 弦を押さえて弾く; 14 } 15} 16 17class リコーダー implements 楽器 { 18 public void play(String 音階) { 19 穴を押さえて吹く; 20 } 21}
呼び出し側は以下のように使ったりします。
java
1class program{ 2 public static void main(String[] args){ 3 string input = "piano"; //自分の鳴らしたい楽器を入力 4 楽器 instrument = 楽器取得(input); 5 6 //楽器が取得できたら 7 if(instrument != null){ 8 instrument.play("ド"); //取得した楽器を鳴らす(今回はピアノ) 9 instrument.play("レ"); 10 instrument.play("ミ"); 11 } 12 } 13 14 //nameを入れて、楽器インタフェースを継承した各楽器クラスのインスタンスを返すメソッド 15 public 楽器 楽器取得(String name){ 16 if(name = "piano"){ 17 return new ピアノ(); 18 } 19 if(name = "guitar"){ 20 return new ギター(); 21 } 22 if(name = "recorder"){ 23 return new リコーダー(); 24 } 25 return null; 26 } 27}
interface」
と多態性
をコードにしたときの使い方は大体こんな感じです。
instrument.play("ド");
のように、楽器
という抽象的な概念に対してプログラミングするとポリモーフィズム
という性質がそのコードに生まれます。
この性質を利用すれば、今後あなたが楽器
を使ってコーディングをする際に楽器
を実装した新しい楽器(バイオリンやフルートなど)を追加しても流用ができるようになります。
あとはあなたがそれを必要だと感じられたそのときに使えば良いかと。
投稿2019/06/14 00:49
編集2019/06/14 00:58総合スコア2663
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/14 03:29 編集
2019/06/14 03:59
2019/06/14 04:07 編集
2019/06/14 05:16
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。