class A def initialize p "call A initialize..." # 执行 4 endendclass B < A def initialize p "call B initialize..." # 执行 2 super # 执行 3 endendclass C < B def initialize super # 执行 1 p "call C initialize..." # 执行 5 endendc = C.new # 执行 0 复制代码
复制代码
应用:规则1、4
这是一张说明脚本运行的流程图……= =
2
class A def pass(para) p para endendclass B < A def pass(para) super # 注意,super没有参数也没有括号, # 应用规则 3(1),参数列直接传给基类 super(para) # 用规则 2 传递参数 super() # 用规则 3(2) 传递参数,引发ArgumentError, # 因为提供了 0 个参数给A的pass方法 # 综上呢……我们还可以说明,一个方法内可以写多个super= = endend b = B.newb.pass("Hello World")复制代码
class Sprite_Up < Sprite def initialize(string) super() @string = string self.bitmap = Bitmap.new(640,480) end def update(str) if @string != str @string = str refresh(str) end end def dispose end def refresh(str) super self.bitmap.draw_text(self.bitmap.rect,str) endenda = Sprite_Up.new("")for i in 1..300 a.update("Hello World") Graphics.updateenda.flash(Color.new(255,0,0),40)for i in 1..40 Graphics.updateenda.dispose复制代码