クラスとは何か
とりあえず 「クラスは型である」は間違いである - SiroKuro Page を整理してみようと思った。
自分が考える『クラス』という語句を可能な限り明確にするために、色々と参考にして次のように分けて考える。
前提:「クラス定義」は「クラス型」および「クラス」を定義する
これはたぶん正解で問題ない。
命題その1:「クラス定義 != クラス型」
定義と型そのものは厳密には同じではない。たぶん。
命題その2:「クラス定義 != クラス」
定義とクラスそのものは厳密には同じではない。たぶん。
命題その3:「クラス型 != クラス」
これがそもそもの問題。自分のイメージとしては
- クラス型が表す情報は型に関する情報のみで、実装の詳細は含まれていないだろう
- クラスが持つ情報は、型に関するものを含めて実装の詳細が含まれているだろう
- よって、クラス型はクラスとは異なるものである。
という感覚でいたりする。
命題その4:「変数宣言を記述する際のクラス名」は「クラス」ではなく「クラス型」を示す
そもそもの問題その2。これはどういう風に考えれば良いんだろう。