質問: オブジェクト指向について教えてください。 質問サイトで「オブジェクト指向をわかりやすく教えてください」という 質問をいくつか見ました。 回答者の方は車や料理を例にとって説明してくださいます。 料理の例では「切る」「焼く」などをパーツとして用意しておくことで 魚を切る、肉を切るなど、パーツを流用していく事を説明されています。 これってC言語で関数を自作する場合の考え方と何が違うのでしょうか? 「切る」という関数、「焼く」という関数を作っておき、魚や肉を引数に するといった事はC言語でよく使われる方法だと思うのですが。 #もちろん、C言語でオブジェクト指向プログラミングができないわけでは ないのだと思いますが、上記のようにパーツを関数で用意するのはC言語で よく行うことではないのかなと思い、質問させていただきました。
回答: C言語で関数を作るのと大きく異なる点が、多態性です。 魚と餅では焼き方が違うじゃないですか。(魚は殿様に焼かせろ、餅は乞食に焼かせろなんて言いますよね) そこで、その焼き方というのを魚・餅にそれぞれ持たせて同じ「焼く」という名前を付けます。同じ名前で別々の動作が呼び出されるので多態と呼ぶわけですが、 食材リストについて「全要素について"焼け"」と指示すれば、各食材がそれにあった焼き方をしてもらうようなことができるわけです。