クラスを考える③(勘違い)
ここまでのお話で、知らず知らずに「現実世界とプログラミング世界の乖離」が出てきています。じゃあクラスの中身(フィールドやメソッド)はあんこの量とか焼き加減だけど、現実のたい焼きの型にはあんこを入れる場所はないし、焼き加減もはたい焼きの型とは関係ないぞ?
確かにそうなんです。たい焼きの中身があんこなのか、チョコレートなのか、クリームなのかは焼く人間が勝手に変えられるもので、たい焼きの型は全く関与していません。焼き加減もそうです。しかし、実際のクラスは中身を入れる変数を持っていたり、焼き加減の振る舞いをメソッドとして持っていたりします。
もう一つよくある勘違いがあります。「関数化する」=「クラスにする」と考えることです。VB6の延長で考えると、どうしてもモジュール概念が邪魔をして、「クラスって関数の集まりでしょ?」となり「関数化する」=「クラスにする」ってなってしまいます。違います。クラスは関数ではありません。関数は機能を提供するメソッドの一つであり、それを使ってインスタンスを作ることはできません。