• 締切済み

ポリモーフィズムについて

foxa-gogoの回答

  • foxa-gogo
  • ベストアンサー率44% (38/85)
回答No.4

僕は、ポリモーフィズムとは、「知らないこと」だと思います。 例えば、車を運転する人がエンジンをかける時の事を考えてみるとします。 一言に車といっても、ガソリンエンジンの車もあれば、ディーゼルエンジンの車もあるだろうし、最近は電動の車だってあるでしょう。それぞれのエンジンのかかり方は、詳しく見れば全然違います。電動車はモーターを始動させるだろうし、ガソリン車であればガソリンを噴射したり、点火プラグを準備したりするかもしれません。 しかし、車のユーザはそんなことは「何も知らなくても」、どんな種類の車でもエンジンをかけることができます。それは、「ターンキー」という「インターフェース」を知っているからです。 車のユーザが、車を買うたびにエンジンのかけ方を勉強しなければいけなかったら、仕事をしている暇もないでしょう。しかし、「ターンキー」という「インターフェース」のおかげで、1回教えておけば二度と勉強(修正)する必要はなくなり、本来の仕事に注力できるのです。 これにより、開発工数の削減とバグの低減という効果が生まれてきます。 また、再利用性も高まります。「エンジンをかける人」をいくつも開発しなくても、1人開発すればどんな車にも使えるようになるからです。 この時、ターンキーを回すという共通の動作から、電動車がモータを始動させたり、ガソリン車がガソリンを噴射したりといった異なった動作が水面下で起こる概念を、ポリモーフィズムといいます。 部分的に変化させるということに関しては、むしろ継承(インヘリテンス)が一番近いと思います。 特にJavaの世界では、ポリモーフィズムはインターフェース、したがって実装のないものを媒介に活用されることが多いです。これは、Javaではマルチインヘリタンスを(わざと)禁止しており、「部分的に変化させる」継承の利用は制限されてしまうからです。

関連するQ&A

  • 関数化して楽したいですが・・・

    http://oshiete1.goo.ne.jp/qa2419133.html で,わたしの質問に対して#2さんにいただいた回答を ほぼそのまま活用しています. 「もっとわかりやすく関数化したりしてください」とありますが, たとえば,#2さんが示されたどの部分が関数化できますか. 共通処理部分を function func_name() みたいに定義するらしいことくらいしかわかりません. 関数化により,後々のコーディングで楽できることはわかるのですが 具体的な発想がないため着眼できません (教わりさえすればいつも,おおそうか!と目からウロコなんですけど)

    • ベストアンサー
    • PHP
  • ケース形状を変える程度も違法?

    週刊アスキー2月3日号の「ミニノート マル秘 強化術5」で、USBタイプの無線LANアダプタを、ケースから基盤を出し、それをミニノート内部に空きスペースに詰め込む、という記事がありました。 過去質問の「改造行為は違法?」 http://oshiete1.goo.ne.jp/qa4026762.html では、無線機器の改造は原則違法と書いてありました。 ケースから出す、ボタンを付け替える、といった形状変更程度の改造は、違法にはあたらないのでしょうか。 できることなら、基盤から出ているUSBの端子を付け替える程度はしてみたいです。

  • 文字がランダムに変化し、正しい文字列にするには?

    文字がランダムに表示されながら、最終的に目的の文字列になるという スクリプトがわかりません。 http://oshiete1.goo.ne.jp/qa2016276.html ↑こちらでも同様のご質問をされてみえるのですが、 この中で回答をされている方のスクリプトですと、 『若干違いますが参考までに。』と、書かれている通り、 一文字一文字がランダムに変化しているというような感じではなく、 全体がランダムに変化している様に見えてしまいます。 私もhttp://yugop.com/​の下部メニュー部分のように、 一文字ごと、きちんと変化をさせたいのですが、 どなたかわかる方いらっしゃいましたら、お教え願えませんでしょうか?

    • ベストアンサー
    • Flash
  • XAMPP内のmysql\bin\my.cnfが見つからない

    http://oshiete1.goo.ne.jp/qa3124108.html を参考にしながら、MYSQLを設定しようとしたところ、\mysql\bin\my.cnfが見つかりません。↑の質問とバージョンは同じです。 \mysql\bin\にmyというショートカット(短縮ダイアル)はあるものの、ダブルクリックしても変化がありません。 設定を変更するため、my.cnfはどこにあるのでしょうか?

    • ベストアンサー
    • MySQL
  • ポリモーフィズムについて簡単に知りたい

    ポリモーフィズムについて、日常生活を使って、教えて下さい。 インターフェイスとの違いがよく分かりません。

  • ポリモーフィズムがうまくいきません

    タイトルのままなのですが、、うまくできません。 間違っているところの指摘お願いします。 #include <iostream> using namespace std; class kuruma{ public: void view(void){printf("車\n");} }ku; class hutuu : public kuruma{ public: void view(void){ printf("普通車\n"); } }hu; class track : public kuruma{ public: void view(void){ printf("トラック\n"); } }to; int main(void) { char input[10]; kuruma *oya1=&ku , *oya2=&hu , *oya3=&to;; oya1->view(); oya2->view(); oya3->view(); scanf("%s",input); return 0; }

  • PC上の音が「低い」状態で鳴ります。

    Windows上で流れるすべての音声(システム音声、音楽、 映像中の音など)が通常より低い音で再生されます。 ピッチ変更ができるソフトで調べてみたところ すべて周波数が2%くらい下がっているようです。 PCはWindowsXPを使っています。 原因と思われる心当たりはありません・・・ コントロールパネルからサウンド関係の項目を調べても これといっておかしな部分は見つからず、 再起動を試して見ても直りませんでした。 なお、過去のログを漁ってみると 今回の事例と似たような記事がありましたが 解決方法は見つかりませんでした。 http://oshiete1.goo.ne.jp/qa886382.html http://oshiete1.goo.ne.jp/qa1202339.html http://oshiete1.goo.ne.jp/qa1548160.html 作業をする上で支障をきたすわけではないのですが どうしても違和感があって気持ち悪い感じがします。 宜しくお願いします・・・。

  • iPod ドックコネクタの延長ケーブル

    carrozzeriaのiPod用アダプタ「CD-IB10II」を所有しており、 このたび「iPod nano 8GB(3G)」とシリコンケースを購入しました。 ケースをつけない状態なら問題なくiPod用アダプタと接続できるの ですが、ケースをつけた状態だとドックコネクタの土台部分が 厚いために、ケースに邪魔されてうまく接続できませんでした。 そこで質問なのですが、ドックコネクタ部分を延長するような製品を ご存じないでしょうか? 以前にも同じような質問が出ていましたが、解決には至っていない ようです…。 http://oshiete1.goo.ne.jp/qa2167284.html 以上、よろしくお願い致します。

  • htmlファイルのアイコンが未登録に

    Firefoxをインストール後、アンインストールしました。 アイコンはFirefoxのままだったので、コントロールパネル⇒フォルダオプションでhtmlをIEに登録し直したら、未登録のアイコンになってしまいました。 そこでまず”窓の手”で設定変更を試みたのですが、駄目でした。 以下の方法も試しましたが変化ありませんでした。 http://oshiete1.goo.ne.jp/qa1542948.html 環境はXP SP2 IE7です。 どなたか治し方わかる方いらっしゃいますか?

  • 家庭菜園はベランダと庭で収穫量の差はありますか?

    知人から家庭菜園の話を聞き、急に家庭菜園を始めたくなり、この時期になにが植えられるか過去の同様の質問を参考にさせていただきました。 http://oshiete1.goo.ne.jp/qa3515321.html http://oshiete1.goo.ne.jp/qa2527657.html http://oshiete1.goo.ne.jp/qa1115170.html その結果、ハツカダイコン、ほうれん草、菜の花、ネギ(スーパーで買ってきた根の部分を切って植える)であればこの時期でも植えられるのではということでした。 私の戸建(東海地区)の庭はほとんどを砂利で敷き詰めていますが、1M×2Mくらいは土のままにしてあり、高さ30cmくらいの木を数本植えてあり、その木と木の間で家庭菜園をやるか、2Fのベランダのプランタでやるか迷っています。 質問1. プランタよりも、庭のほうが、有効な土の体積や水分の保持のしやすさという観点から、野菜は大きく育つのでしょうか?ちなみに、日当たり、風通しは、ベランダ、庭両方とも良好です。 質問2. 限られた庭の面積(もしくはプランターの面積)でできるだけ効率的に収穫したいのですが、ハツカダイコン、ほうれん草、菜の花を植える場合、その1本1本の間はどれくらいが良いのでしょうか?(20CMくらい?) 家庭菜園初心者ですがアドバイスをお願いいたします。