|  |  | 
| 类的定义: 
 前面所用到的String、Array、Sprite等都是类,我们已经使用过系统为它们编好的一些方法了。在 puriset 的脚本中除去最后的 Main脚本全部是类定义。
 
 在例如定义 Person 的类时是这样的:
 
 
 
 上面定义了一个什么都没有的类,但这个类却可以使用,如:
 
 
 
 也就是说,我们可以实例化这个类。
 
 想要继承也很简单,例如:
 
 
 
| class Person < Monkey end
 |  
 方法的定义:
 
 和普通函数的情况相同,如果在类的定义当中上写 def..end 的内容,那么这个函数就自动成为那个类的方法了:
 
 
 
| class Person def hello
 print" 您好 "
 end
 end
 alex = Person.new
 alex.hello #=> 您好
 |  
 属性:
 
 以@为开头的变量名,这个变量自动地作为属性而使用。局部变量只有在 def..end 等结构内有效,然而如果能使用属性的话,只要对象的实例存在,则属性的值总是被保存。
 
 
 
| class Person def name
 return @name
 end
 def name=(name)
 @name = name
 end
 def hello
 print" 我是 "+@ name+""
 end
 end
 
 alex = Person.new
 alex.name=" Allex"
 alex.hello #=> 我是 Allex
 |  
 在这个例子中, @ 准备 name 属性,而 name() , name=()方法分别定义了如何对@name取值和如何设置@name的值。
 
 为属性赋初值:
 
 
 
| class Person def initialize
 @ name=" 无名先生 "
 end
 end
 |  
 这样在实例化对象的时候,会默认先调用initialize方法来为@name赋初值
 
 如果在 initialize 方法中加入参数, new 会取那个参数。
 
 
 
| class Person def initialize(name)
 @name = name
 end
 end
 
 alex= Person.new(" Allex")
 |  
 在这个例子中, initialize 方法把参数 name 的取值赋给属性 @name作为初值。
 
 方法的重载:
 
 在子类里,我们可以通过重载父类方法来改变实体的行为,如果我们只是想增强父类的 identify 方法而不是完全地替代它,就可以用 super。
 
 
 
| class Hahaha def laugh(x)
 return" 是 "* x
 end
 end
 
 class Wahaha < Hahaha
 def laugh(x)
 return" 哇 "+ super
 end
 end
 
 man = Wahaha.new
 p man.laugh(4) #=>" 哇是是是是 "
 |  
 super总是返回父类返回的值。
 
 |  
|  |  
| 版权声明:RUBY文档中心的所有文章标明[原创]的均为本站作品,版权属RUBY中文化计划,若转载请注明;标明[翻译]的其外文版权归原作者,译文版权属RUBY中文化计划;标明[转贴]的,若原作者感到侵犯了他的著作权,那么请及时跟主持人联系,我们会尽快更正。 |  |  |