调用超类方法

我已经决定我的游戏会有两个派生自 Thing 的后代类。Treasure 类添加了一个可读写的 value 属性;注意它的 initialize 方法中调用了超类方法,是为了在初始化新变量 @value 之前初始化 namedescription 属性:

  1. super(aName, aDescription)
  2. @value = aValue

在这里如果我省略了对超类方法的调用,那么 namedescription 属性将永远不会被初始化。这是因为 Treasure.initialize 覆盖了 Thing.initialize,所以当一个 Treasure 对象被创建时,Thing.initialize 代码不会自动被执行。

另一方面,Room 类也派生自 Thing,目前没有 initialize 方法;所以当一个新的 Room 对象被创建时,Ruby 会从类层次中逐层向上寻找该方法。第一个 initialize 方法在 Thing 中被发现;所以一个 Room 对象的 namedescription 属性在这里被初始化。