(OCaml 3.12 〜)
class-field | ||
inherit! class-expr as value-name | ||
val! inst-var-name : typexpr = expr | mutable||
method! method-name parameter typexpr = expr | private||
method! method-name : poly-typexpr = expr | private
inherit!
、 val!
、 method!
の意味は inherit
、 val
、 method
と同じですが、それにより導入される定義がオーバライドであることを要求します。すなわち、 method!
はmethod-name がクラス内で既に定義されていることを要求し、 val!
は inst-var-name が既に定義されていることを要求し、 inherit!
は class-expr で何らかの定義をオーバーライドすることを要求します。そのようなオーバーライドがなければエラーが通知されます。
これらの予約語は、副作用として、「メソッドのオーバーライド」と「インスタンス変数のオーバーライド」に対する警告を避けるために使うことができます。 Objective Caml 3.12 以降では後方互換性のために「メソッドのオーバーライド」に関する警告を手動で有効にしなければなりません。