6.5 ダブルディスパッチ

プログラム

C6_5

プログラムの説明

ダブルディスパッチ

プログラムC6_2を実行してください。

結果を確認してください。では何が行われているのでしょうか。Userインタフェースでは

acceptメソッドが追加されました。

これを、それぞれのUserオブジェクトが

teacher.accept(printVisitor); //teacherはこの時点ではUser型
studnet.accept(printVisitor); //studentはこの時点ではUser型
staff.accept(printVisitor); //staffはこの時点ではUser型

でVisitor(訪問者)の受け入れを行います。次に

acceptメソッドでは

printVisitor.visit(this); //それぞれのオブジェクト型でvisitメソッドを呼び出します。

これを一般的にダブルディスパッチ(二重の呼び出し)と呼びます。