ダブルディスパッチ |
プログラムC6_2を実行してください。 結果を確認してください。では何が行われているのでしょうか。Userインタフェースでは acceptメソッドが追加されました。 これを、それぞれのUserオブジェクトが teacher.accept(printVisitor); //teacherはこの時点ではUser型 でVisitor(訪問者)の受け入れを行います。次に acceptメソッドでは printVisitor.visit(this); //それぞれのオブジェクト型でvisitメソッドを呼び出します。 これを一般的にダブルディスパッチ(二重の呼び出し)と呼びます。 |
---|