具体についてのクラスはインスタンスと同じもの?

特定の具体を示しているクラスがあったとして、それはインスタンスと同じものと言えるのか?

ぼんやりとした疑問で答えはまだ出ていない。

f:id:fjkz:20160327182341p:plain

例えば、DogクラスとPetDogクラスがあったとする。PetDogクラスは、Dogクラスを継承していて、Dogクラスの中でも人に飼われているといるものという特殊なオブジェクトを示している。Dogクラスの示す範囲を限定していて、具体化してるといっても良い。

さて、PetDogクラスに属するjhon, hachi, pochiというDogがいたとする。プログラム上はこれらはインスタンスだ。仮にインスタンスでなくて、jhon, hachi, pochiといった特定のPetDogの特徴だけを備えたJhon, Hachi, Pochiというクラスを作ったら、これらのクラスが示すものはjhon, hachi, pochiと同じものなのだろうか?

もちろんJavaなりC++の上では別ものになる。クラスはインスタンス化しないと使えないので、インスタンスとクラスは別ものという風にできている。インスタンス化というものがなくて、具体的なクラスを作るという操作が、インスタンス化することと等価になるようなプログラミング言語は存在しうるのかということである。

無理な気がしている。Jhonクラスに属するものがjhonだけであっても、Jhonクラスとjhonは別のものに思える。でも、どうしてかがわからない。具体についてのクラスと具体は何が違うのだろう?

単に私がクラスとか型とか集合という概念を分かっていないだけ……?