class People
@kind = "human"
class << self
attr_accessor :kind
end
end
class Student < People
end
p People.kind # => "human"
p Student.kind # => nil
说明类的实例变量的值不可以被继承,本身可以被继承。实例变量本来是应该属于一个特定的对象或实例的,具有分配好的内存地址(引用)。 实例变量用于区分各个实例间的不同。各个对象的数据不同就是为了区分对象的不同,数据分离。
而实例方法和类方法(属于某个类的方法,也是类的单件方法)是可以被继承的。方法的存在的原因就在于代码的复用。 所以,方法用于继承和复用。
总结为一句话,各个对象通过属性或实例变量加以互相区分,通过共用或复用或继承来具有共同的特性。 同与不同。数据与方法。 Go语言中强制将数据和方法分离。归根结底,各种语言的设计思路和特性体现的是其作者对事物及其关系通过逻辑表示的思考与探索。
由此引出Rails中的class_attribute
,可以定义类实例变量和实例变量的accessor。