3

「bankAccount」というクラスがあるとしましょう。このクラスには、アカウントの金額にアクセスできる「view」というメソッドがあります。

また、bankAccountから継承する「bankAccountPW」というクラスがあるとします。'view'メソッドをオーバーライドして、正しいパスワードが入力された場合にのみ金額を返すようにします。基本クラス(bankAccount)の「view」メソッドにアクセスして、元の「view」メソッドの観点からオーバーライドされた「view」メソッドを定義するにはどうすればよいですか?

つまり、Racketを使用して、サブクラスのオーバーライドされたメソッド内の基本クラスメソッドにアクセスするにはどうすればよいですか?

4

1 に答える 1

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
于 2013-03-24T21:58:32.733 に答える