クラスインスタンス変数の存在意義が分からないという>>409
以下の実行結果に問題を感じないのか?

class Animal
attr_accessor :species

@@count_of_species = 0

def self.count_of_species
@@count_of_species
end

def initialize(species)
@@count_of_species += 1
@species = species
end
end

class Dog < Animal
end

class Cat < Animal
end

dog = Dog.new('shibainu')
cat = Cat.new('mikeneko')

puts Animal.count_of_species
puts Dog.count_of_species
puts Cat.count_of_species