class Product
{
}
class Mobile extends Product
{
}
class Market
{
public void buy(Product product)
{
System.out.println("Search a product in market");
}
public void buy(Mobile mobile)
{
System.out.println("Search a mobile in market");
}
}
class Shop extends Market
{
public void buy(Product product)
{
System.out.println("Search a product in shop");
}
public void buy(Mobile mobile)
{
System.out.println("Search a mobile in shop.");
}
}
public class DoubleDispatchExample
{
public static void main(String[] args)
{
Market market = new Market();
Market shop = new Shop();
market.buy(new Product());
shop.buy(new Mobile());
}
}
上述程序的输出是:
在市场上搜索产品。
在商店中搜索手机。
因此,输出暗示调用 market.buy(new Product()); 和 shop.buy(new Mobile()); 由调用它的对象的引用和传递给它的参数来解决。所以如果它同时使用这两个东西来调度一个函数调用,我们可以称之为双重调度吗?还是我误解了双重派遣一词?