クラスとは何か

とりあえず 「クラスは型である」は間違いである - SiroKuro Page を整理してみようと思った。
自分が考える『クラス』という語句を可能な限り明確にするために、色々と参考にして次のように分けて考える。

  1. クラス定義(ソースコードの記述)
  2. クラス型
  3. クラス(java.lang.Class のインスタンス)
  4. 変数宣言を記述する際のクラス名

前提:「クラス定義」は「クラス型」および「クラス」を定義する

これはたぶん正解で問題ない。

命題その1:「クラス定義 != クラス型」

定義と型そのものは厳密には同じではない。たぶん。

命題その2:「クラス定義 != クラス」

定義とクラスそのものは厳密には同じではない。たぶん。

命題その3:「クラス型 != クラス」

これがそもそもの問題。自分のイメージとしては

  1. クラス型が表す情報は型に関する情報のみで、実装の詳細は含まれていないだろう
  2. クラスが持つ情報は、型に関するものを含めて実装の詳細が含まれているだろう
  3. よって、クラス型はクラスとは異なるものである。

という感覚でいたりする。

命題その4:「変数宣言を記述する際のクラス名」は「クラス」ではなく「クラス型」を示す

そもそもの問題その2。これはどういう風に考えれば良いんだろう。