赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 1 |
经验 | 8195 |
最后登录 | 2012-9-15 |
在线时间 | 1 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 1 小时
- 注册时间
- 2007-6-12
- 帖子
- 202
|
a = "Ruby"
p a.upcase # => "RUBY"
上面示例中,调用对象的方法时于变量名称后面会加上符号“.”,在其后面记述要调用的方法。而操作的对象称为作用实例。这里 a.upcase 中的 a 就是作用实例。
但是,对字符串以外的对象调用 String 类的方法比如 upcase 方法的话会怎样呢?
a = 3
p a.upcase # ERROR!!
这样会出现错误。因为 3 是一个整数对象属于 Fixnum 类,而 upcase 在 Fixnum 类的方法中没有定义。
还有,没有必要完全记住这些方法的名称。在对字符串进行某些操作时要使用 String 类的方法,直接打开 GRSS 参考进行查找会十分方便。使用方法的次数多了,自然就会记住它们。
父类
3 和 65 等整数,是 Fixnum 类的实例。
看到 Fixnum 类的方法列表了吧,它的方法数量是如此的少会不会觉得不可思议。当然整数能使用的方法不只这几个。关键在父类这栏里。到 Integer 里面去看看吧。
在 Integer 类中有个名称为 chr 的方法。这是个将数字转换为该数字编码的文字并返回的方法。试试看吧。
a = 65
p a.chr # => "A"
上例正确的返回了一个结果。但是 65 是 Fixnum 类的一个实例,为何调用 Integer 类的方法 chr 也不出现错误呢?这是因为 Integer 类是 Fixnum 类的父类,而 Fixnum 类继承了父类的方法。
所谓继承,就是在一个原有类中扩充定义一个新类,其新定义的类可以使用原有类的方法和属性。这样原来的类就称为父类,而新定义的类则称为子类。
总之,Fixnum 类是 Integer 类中扩充定义的一个新类。也可以这样说,Integer 类是 Fixnum 类的父类。Fixnum 类继承了 Integer 类的性质,也同样继承了父类的方法。当然,继承的还包括 Integer 类的父类 Numeric 类,以及 Numeric 类的父类 Object 类中定义的方法,Fixnum 类的实例都可以使用。
看到这里也许有人会问,为何要特意把这些类给分开呢?回答会有一点困难,继承的意思,是保持被继承者的性质但却同时拥有自己独有的特性。比如,浮点数是 Float 类的实例,这个类是从 Numeric 类中继承而来的。整数和浮点数的性质是不相同的,然而无论哪个都是表示「数字」这个概念却是共同的,所以在 Numeric 类中定义共同的部分而不用在各个子类中重复定义。
从http://bbs.rpgchina.com/read-htm-tid-26872.html上看的~~~ |
|