一、对象(实例)与类:
类表示对象的类型,有数组类、字符串类。如: [1,2,3]是一个数组对象,属于数组Array这个类。
二、实例方法与类方法:
对象(实例)/类.方法(参数) 是调用方法的途径,而对象(实例)/类就是方法的接收者。当对象(实例)存在时,对象(实例)是接收者,此时调用的方法是实例方法;当接收者是类时,则称该方法为类方法。类方法是不能操纵实例,但是可以进行与类相关的操作,如c=Array.new就是Array数组类接收叫new的类方法建立一个叫c的数组对象,我们又叫Array数组类实例化为c对象,而c.save就是c这个数组对象接收save方法,此时save是定义在Array数类里的一个实例方法。
二、变量:
变量分为实例变量、局部变量、类变量。以下为名字为test.rb的文件:
class Test
def a
@@a #getter
end
def a=(b) #setter
@@a = b
end
end
test1 = Test.new
test1.a = "c"
test2 = Test.new
puts test1.a
puts test2.a
该文件执行后,会输处c c 两个值,因为@@a是类变量,会被类Test的2个实例共享。但是,@@a变为实例变量@a后,则只会输出一个c。提醒,在变为实例变量后会输出结果,是因为setter方法a会设定实例变量@a,getter方法会通过实例变量不限于方法域但是限于方法域的特性取得实例变量@a的值,并通过getter方法读取结果。另外,如果实例变量@a又变为局部变量a,那么将没有输出结果,因为局部变量仅限于方法域内。
网友评论