3.1Ruby语言的类(Class)、对象(Object)、继承(Inheritance)

为了使用 Ruby 实现面向对象编程,您需要先学习如何在 Ruby 中创建对象和类。

类的定义

总是以关键字 class 开始,后跟类的名称。类遵循标识符的命名规则,一般PascalCase命名法。类 User 如下所示:

class User
end

对象的创建

对象是类的实例,使用 new 方法创建对象。下面的示例创建了类 User 的两个对象 user1 和 user2:

user1 = User.new
user2 = User.new

使用new方法创建对象的时候,许多其他语言通过自动调用一个“构造函数(constructor)“来实现初始化对象的,而Ruby则是通过自动调用一个initialize方法实现初始化对象的,new方法会把实参原封不动地传给initialize方法的myname形参,将传递过来的参数赋值给@name实例变量,然后执行实例方法hello。

class HelloWorld                        # class语句
  def initialize(myname = "Ruby")       # initialize方法
    @name = myname                      #初始化实例变量
  end

  def hello                             #实例方法
    puts "Hello,world.I am #{@name}."
  end

bob = HelloWorld.new("Bob")
bob.hello

类的继承

Ruby语言支持单继承,就是说1个子类只可以继承1个父类,可以用mix-in的方式引入模块从而支持“多继承”的效果。

class 类名 < 父类名
  类定义
end

Class是Module的子类,Module是Object的子类,Object是BaseObject的子类,BaseObject是所有类的根类。

irb(main):001:0> p Class.superclass
Module
=> Module
irb(main):002:0> p Module.superclass
Object
=> Object
irb(main):003:0> p Object.superclass
BasicObject
=> BasicObject
irb(main):004:0> p BasicObject.superclass
nil
=> nil

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/ruby/rubybasic/3317.html

发表评论

登录后才能评论