Ruby中的面向对象编程

Ruby中,一切都是对象。 也就是说,除非是一种方法。 每个对象也将属于一个类。 例如,数字1是Integer类的实例。 要在Ruby中查找对象的类,我们可以调用#class方法。 因此,1.class将返回Integer。 字符串“ one”也是一个对象。 它是String类的一个实例。 每个类都有多种可用的方法。 要检索这些方法的列表,我们使用#methods方法。 例如,如果我们使用1.methods或“ one” .methods,我们可以看到每个对象可用的方法列表。 现在,由于我们在类的实例上调用#method,因此返回的方法列表将称为实例方法。 类本身也将具有可用的方法。 我们称这些类方法。 我们可以类似的方式使用String.methods之类的东西,并查看类的方法列表。

我喜欢把工厂当作一个类……一个对象工厂。工厂既有蓝图,又有创建实例的机器。 在类中定义的实例方法将可用于该类的每个实例。 考虑以下 :

  Foo类 
  attr_accessor:名称 
 清晰度栏 
self.name +“ bar”
结束
 结束 
  foo = Foo.new 
=>#
  foo.name =“ foo” 
=>“ foo”
  foo.bar 
=>“ foobar”
  bar = Foo.new 
=>#
  bar.name =“酒吧” 
=>“酒吧”

=>“ barbar”

上面,我们定义了一个名为Foo的类。 通过使用class关键字,我们继承了名为Class的类。 这甚至在我们在类主体中添加任何内容之前就立即提供了一些基本功能。 我们可以通过调用Foo.class来验证这一点,该类返回Class。 然后,Class.methods将向我们显示每个类都立即可用的默认方法的列表。 接下来,我们通过使用attr_accessor作为名称来定义两种方法。 这给我们两个方法,#name =和#name。 最后,我们定义了#bar,它只是在实例名称后添加“ foo”并返回它。

尽管这不是最有用的类,但它确实说明了我们使用Ruby进行编程的难易程度。 我们可以简单地创建一个类,而无需做任何进一步的操作来创建该类的新实例。 注意,我们能够调用Foo.new,而不必定义#new方法? 我们在Ruby中创建的每个新类都将继承#new方法。 因为我们的Foo类还具有#bar方法,所以我们能够在创建的每个实例上调用它。

尽管它是一个更深入的概念,但这是基本的面向对象编程的本质。 我们可以创建类,在这些类中定义方法,然后该类的每个实例都会响应这些方法!