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

类声明

总是以关键字 class 开始,后跟类的名称。

class User
end

继承

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
.2Ruby语言的类(Class)、继承(Inheritance)、对象(Object)"/

创建对象

对象是类的实例,使用 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

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

(1)
上一篇 2020年8月1日 23:28
下一篇 2020年8月2日 02:21

相关推荐

  • 1.6Ruby数据结构之数组(Array)、哈希(Hash)、集合(Set)

    数组(Array) 数组是带索引的对象的集合。 数组中的元素是有序的,通过索引访问。 数组中的元素不必都属于同一个类型,而且可以随时替换元素。 数组的长度(元素的个数)可以动态改变,可以向数组添加、删除元素。 哈希(Hash) 哈希,又称为 散列、映射(map)、关联数组 。 哈希中的值是通过键访问的。 哈希里的值不必…

    Ruby语言教程 2020年7月6日
    08010
  • 1.9Ruby语言的块(Block)以及带块的方法

    块 又被称为 代码块 ,位于do~end(包括do和end关键字)或者花括弧{~}(包括花括弧)中间的代码就是 代码块 。代码块不可单独存在,只有出现在一个方法调用之后才是合法的。 程序的控制流首先执行方法,当遇到yield时,控制流会从方法转移到那个与方法调用相关联的代码块中,当程序执行完代码块之后,方法重新获得控制…

    Ruby语言教程 2020年7月9日
    07180
  • 1.4Ruby语言的常见类型(Type)和值(Value)

    虽然Ruby一切面向对象,但是在运行的时候还是会区分值类型和引用类型,比如nil、true、flase、integer均是作为立即值(immediate values)来处理的,类似与C#的值类型,Java的原始类型。 1.NilClass(空) nil对象代表空值。 2.TrueClass(真)和FalseClass…

    Ruby语言教程 2020年7月4日
    09330

发表评论

登录后才能评论