佐々木屋

技術的なことから趣味まで色々書きます

クラスを考える②(クラスとは?インスタンスとは?)

クラスって何?

まず、VB6訛が残っている方は、「モジュール」という概念を一旦忘れて下さい。この概念は後程「静的クラス」でお話します。

前にも話しましたが、クラスを調べると設計図という言葉が出てきます。確かに設計図という例えは間違いないのですが、もう一つ違う言い方をすればクラスとは「型」です。ここで言う型とは、intやstringとかではなく「模型の型」のことです。タコ焼き機とかたい焼きの型とかのあれです。私はこっちの方がしっくりきます。
f:id:sasaki816:20181222220212p:plain:w100

この「型」を一度作っておけば、材料と焼き加減のレシピがあれば誰が焼いても同じ形・味のたい焼きが出来上がります。


インスタンスって何?

調べると実体って出てきませんでしたか?これがよく分からんのです。実体って何さ?
要は、たい焼きの型(たい焼きクラス)にたい焼きの素を入れて焼くと出来上がるたい焼きのことです。インスタンスはクラスを指定すればいくつでも(常識範囲内で)作ることができ、その形や味(振る舞い)はすべて一緒ですよね。たい焼きの型からタコ焼きは出来ませんので。
f:id:sasaki816:20181222220220p:plain:w100

そして、同じといえどもたい焼きは現実に5個別々にあります。つまり、最初の1個を食べても、残り4個には影響がありません。これがインスタンスとクラスの関係です。


フィールドって何?

クラス内で宣言される変数のこと全般です。メンバー変数とも呼びます。これは値や参照を保持しますので、クラスに必ず「ある」とは限りません。たい焼きに例えると、焼き時間やあんこの量とかですかね。
フィールドは非公開として、専用のプロパティを実装してインスタンスからアクセスすることが一般的です。


メソッドって何?

クラス内の機能・振る舞いのこと全般です。VBだとサブプロシージャとかいったりもします。関数もメソッドの一部です。機能のみを提供する場合はvoid(VBだとSub)となり、戻り値がある機能はその型を宣言(VBだとFunction)します。


プロパティって何?

フィールドを操作する為の機能です。プロパティを使うことで、クラス内のフィールドへより安全にアクセスすることができます。
プロパティは少し説明が必要ですので、クラス(プロパティ)編で解説しています。そちらも参考にして下さい。