多个父类
介绍多重继承:一个类可以有多个父类,并说明父类的书写顺序如何决定方法的查找优先级。
一个类可以拥有不止一个父类。我们可以有一个 TA(助教)类、一个 singer(歌手)类,还有一个 TA-singer 类。
(define-class (singer)
(method (introduce) '(I am aiming for MTV awards!))
(method (sing) '(tralala lalala)))
(define-class (TA)
(method (introduce) '(GO BEARS!))
(method (teach) '(Let me help you with that box-and-pointer diagram)) )
(define-class (singer-TA)
(parent (singer) (TA)) )
(define-class (TA-singer)
(parent (TA) (singer)) )
> (define rohin (instantiate singer-TA))
> (define mona (instantiate TA-singer))
> (ask rohin 'introduce)
(I am aiming for MTV awards!)
> (ask rohin 'sing)
(tralala lalala)
> (ask rohin 'teach)
(Let me help you with that box-and-pointer diagram)
> (ask mona 'introduce)
(GO BEARS!)
> (ask mona 'sing)
(tralala lalala)
> (ask mona 'teach)
(Let me help you with that box-and-pointer diagram)
注意,TA-singer 和 singer-TA 都继承了 TA 类和 singer 类,但顺序不同。当我们向这两个类的实例发送同一条消息时,写在前面的父类优先。
测验小抄
参加测验时,你可以携带这份表格,除此之外还有你通常可用的那张单面单页小抄(一面可双面书写的 cheat sheet)。