Racket - 如何在子类中的重写方法中访问超类方法

时间:2013-03-24 21:41:17

标签: methods override racket superclass

假设我有一个名为“bankAccount”的课程。此类有一个名为“view”的方法,可以使用该方法访问帐户中的金额。

我们还说我有一个名为“bankAccountPW”的类,它继承自bankAccount。我会覆盖'view'方法,这样只有输入正确的密码才会返回金额。我如何访问基类(bankAccount)'view'方法,以便根据原始的'view'方法定义被覆盖的'view'方法?

简而言之,使用Racket,如何在子类中重写的方法中访问基类方法?

1 个答案:

答案 0 :(得分:4)

您需要使用超级表单:

#lang racket

(define bankAccount%
  (class object%
    (super-new)
    (define/public (view) 'amount)))

(define bankAccountPW%
  (class bankAccount%
    (super-new)
    (define/override (view) 
      (if #t (super view) 'blocked))))

(send (new bankAccountPW%) view)
=> 'amount