超类与子类
现在来看看 Treasure 类,注意声明方式:
class Treasure < Thing
尖括号 <
表示 Treasure 是 Thing 的一个子类(后代类),因此它从 Thing 类继承数据(变量)和行为(方法)。因为 get_name
、set_name
、get_description
以及 set_description
方法已经存在于 Thing 类中,所以不需要在后代类(Treasure)中再编写了。
Treasure 类还有额外的数据,也就是它的 value(@value
),我已经为它编写了 get 和 set 访问器了。当创建一个新的 Treasure 对象时,它的 initialize
方法会被自动调用。一个 Treasure 对象有三个变量(@name
、@description
和 @value
)需要初始化,所以它的 initialize
方法有三个参数。前两个参数使用 super
关键字传递给超类(Thing)的 initialize
方法,以便 Thing 类的 initialize
方法可以处理它们:
super(aName, aDescription)
当在方法中使用时,super
关键字调用在祖先类或超类中的与当前所在方法的同名方法。如果 super
关键字没有指定任何参数,当前方法的所有参数将会传递给祖先类的方法。但是,像本例中一样,提供了一个特定的参数列表时(这里是 aName
和 aDescription
),那么只有这些参数会被传递给祖先类的方法。