首先,我们通过一个实例来观察类变量与类方法:

classSquaredefinitialize@@number_of_squares=define?(@@number_of_squares)?@@number_of_squares+1:1enddefself.test_methodputs"HellofromtheSquareclass!"enddeftest_methodputs"HellofromaninstanceofclassSquare!"end

上面的代码中,number_of_squares用来记录类Square的实例个数,是类变量,它与对象变量的区别是,前面用两个@符号来标记。Square类中,第一个test_method是类方法,它与对象方法的区别是,它用self.前缀标示。这里self表示当前类,因此self.test_method定义的方法专用于该类。

如果我们学过Java或C++,会发现类变量其实与Java或C++中的静态变量类似,而类方法与Java或C++中的静态方法类似。