创建类: class后跟类名,其中类名的首字母必须要大写。实例化时,通过new方法实例化。在c#中有构造器,构造器与类同名。在ruby中,构造器为initialize方法。当通过new方法实例化一个类对象后,会自动调用initialize方法,把new中的参数传递给initialize方法进行初始化。在c#中的域,在ruby中称为实例变量,定义时前边加@前缀,表示是一个实例变量。
class Customer def initialize(name,age) @name,@age=name,age end end c1=Customer.new("Tom",20)
实例变量只能通过实例方法来访问。如果要访问它们可以提供方法访问器。在c#中称为属性,Java中也是定义方法来表示属性。
class Customer def initialize(name,age) @name,@age=name,age end def name @name end def age @age end end
def name=(v) @name=v end def age=(v) @age=v end
c1=Customer.new("Tom",20) c1.name="Jhon"
class Customer def initialize(name,age) @name,@age=name,age end attr_reader :name,:age attr_accessor:name,:age end c1=Customer.new("Tom",20) puts c1.name,c1.age c1.name="Jhon" c1.age=30 puts c1.name,c1.age
class<<self def 方法 end end
class Customer def initialize(name,age) @name,@age=name,age end class <<self def showName 'ok' end end end puts Customer.showName
#访问性 private protected public private def private_method puts "private method testing" end protected def protected_method puts "protected method testing" end public:protected_method
class Fruit private_class_method:new def Fruit.CreateFruit new Fruit end end f=Fruit.CreateFruit
module作用之一是做为名字空间用。调用类时与调用常量相同:两个冒号
另一作用是作为混入。通过include把模块中的实例方法包含到其它类中。感觉功能像C#中的名字空间引入。