Project1

标题: [脚本初学]Super是什么?干什么用的? [打印本页]

作者: 774741359    时间: 2013-2-8 14:21
标题: [脚本初学]Super是什么?干什么用的?
脚本中很常见这个词 但是又不知道具体含义....请各大神明示。
作者: Sion    时间: 2013-2-8 15:03
本帖最后由 Sion 于 2013-2-8 15:06 编辑

方法的重载超类中已定义的方法在子类中再次被定义称为重载。在子类方法中调用超类相同方法的情况下,要使用关键词 super。
  1. class Hahaha
  2.   def laugh(x)
  3.     return "哈" * x
  4.   end
  5. end

  6. class Wahaha < Hahaha
  7.   def laugh(x)
  8.     return "哇" + super
  9.   end
  10. end

  11. man = Wahaha.new
  12. p man.laugh(4)      # => "哇哈哈哈哈"
复制代码
上述示例是,对新建实例调用 Wahaha 类的 laugh 方法,其中 super 能调用其超类 Hahaha 类的 laugh 方法。那么,最后一行调用 laugh 方法可以理解为 "哇" + "哈" * 4,于是输出结果就为 "哇哈哈哈哈"。

以上内容完全引用自 F1 {:2_259:} 使用此脚本造成的任何后果,本人概不承担任何责任
作者: 晴兰    时间: 2013-2-8 15:06
提示: 作者被禁止或删除 内容自动屏蔽
作者: zhangbanxian    时间: 2013-2-8 19:34
ls都说得很清楚了,再补充一点吧- -b
特殊类的super就是其元类
  1. class A
  2. def says(sth)
  3.   p "watashi ha #{sth}"
  4. end
  5. end
  6. object = A.new
  7. class << object
  8. def says(sth)
  9.    super
  10. end
  11. end
  12. object.says("huaka") #=> "watashi ha huaka"
复制代码
另外,注意super会将传入方法的参数原封不动地传给父类同名方法,如果遇到父类参数不同的情况,务必写明参数,例如父类方法没有参数,但子类有
必须写成super()而非super
作者: 774741359    时间: 2013-2-9 21:01
多谢各位...by the way
祝各位新年快乐




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1