目录搜索
Ruby用户指南3、开始4、简单的例子5、字符串6、正则表达式7、数组8、回到那些简单的例子9、流程控制10、迭代器11、面向对象思维12、方法13、类14、继承15、重载方法16、访问控制17、单态方法18、模块19、过程对象20、变量21、全局变量22、实变量23、局部变量24、类常量25、异常处理:rescue26、异常处理:ensure27、存取器28、对象的初始化29、杂项RGSS入门教程1、什么是RGSS2、开始:最简单的脚本3、数据类型:数字4、数据类型:常量与变量5、数据类型:字符串6、控制语句:条件分歧语句7、控制语句:循环8、函数9、对象与类10、显示图片11、数组12、哈希表(关联数组)13、类14、数据库15、游戏对象16、精灵的管理17、窗口的管理18、活动指令19、场景类Programming Ruby的翻译Programming Ruby: The Pragmatic Programmer's Guide前言RoadmapRuby.new类,对象和变量容器Containers,块Blocks和迭代Iterators标准类型深入方法表达式Expressions异常,捕捉和抛出(已经开始,by jellen)模块基本输入输出线程和进程当遭遇挫折Ruby和它的世界Ruby和Web开发Ruby TkRuby 和微软的 Windows扩展RubyRuby语言 (by jellen)类和对象 (by jellen)Ruby安全反射Reflection内建类和方法标准库OO设计网络和Web库Windows支持内嵌文档交互式Ruby Shell支持Ruby参考手册Ruby首页卷首语Ruby的启动环境变量对象执行结束时的相关处理线程安全模型正则表达式字句构造程序变量和常数字面值操作符表达式控制结构方法调用类/方法的定义内部函数内部变量内部常数内部类/模块/异常类附加库Ruby变更记录ruby 1.6 特性ruby 1.7 特性Ruby术语集Ruby的运行平台pack模板字符串sprintf格式Marshal格式Ruby FAQRuby的陷阱
文字

    类的定义: 

前面所用到的String、Array、Sprite等都是类,我们已经使用过系统为它们编好的一些方法了。在 puriset 的脚本中除去最后的 Main脚本全部是类定义。

在例如定义 Person 的类时是这样的:

class Person 
end

上面定义了一个什么都没有的类,但这个类却可以使用,如:

alex = Person.new 

也就是说,我们可以实例化这个类。

想要继承也很简单,例如:

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中文化计划;标明[转贴]的,若原作者感到侵犯了他的著作权,那么请及时跟主持人联系,我们会尽快更正。  
上一篇:下一篇: