超类与子类

现在来看看 Treasure 类,注意声明方式:

  1. class Treasure < Thing

尖括号 < 表示 Treasure 是 Thing 的一个子类(后代类),因此它从 Thing 类继承数据(变量)和行为(方法)。因为 get_nameset_nameget_description 以及 set_description 方法已经存在于 Thing 类中,所以不需要在后代类(Treasure)中再编写了。

Treasure 类还有额外的数据,也就是它的 value(@value),我已经为它编写了 getset 访问器了。当创建一个新的 Treasure 对象时,它的 initialize 方法会被自动调用。一个 Treasure 对象有三个变量(@name@description@value)需要初始化,所以它的 initialize 方法有三个参数。前两个参数使用 super 关键字传递给超类(Thing)的 initialize 方法,以便 Thing 类的 initialize 方法可以处理它们:

  1. super(aName, aDescription)

当在方法中使用时,super 关键字调用在祖先类或超类中的与当前所在方法的同名方法。如果 super 关键字没有指定任何参数,当前方法的所有参数将会传递给祖先类的方法。但是,像本例中一样,提供了一个特定的参数列表时(这里是 aNameaDescription),那么只有这些参数会被传递给祖先类的方法。