以下に概説したものの正式な名前はありますか。例は c# ですが、前提は他の言語にも当てはまります。何年も前に他の言語でこのようなことをしたことはほぼ間違いありませんが、どの言語か、または概念の名前が私を逃れています。動的ディスパッチ(ある種の)??
私が伝えようとしている重要なポイントは、実行時に実行するメソッドが決定され、呼び出されるということです。メソッドはほとんど同じ署名を持ち、引数の型だけが異なり、引数もすべて同じ継承ツリーにあります。省略した詳細がいくつかあることは承知していますが、例を単純にしたいと思います。
string result;
User u;
User user = new User();
Manager manager = new Manager();
u = user;
result = _Print(u);
Console.WriteLine(result); // user...
u = manager;
result = _Print(u);
Console.WriteLine(result); // manager...
// interested in part
private static string _Print(User u)
{
return (u is Manager) ? Print((Manager)u) : Print(u);
}
// plumbing
private static string Print(User u)
{
return "User...";
}
private static string Print(Manager m)
{
return "Manager...";
}
class User { ... }
class Manager : User { ... }