本节书摘来自异步社区《Android游戏开发详解》一书中的第3章,第3.4节多态,作者 【美】Jonathan S. Harbour,更多章节内容可以访问云栖社区“异步社区”公众号查看
3.4 多态
Android游戏开发详解
你可能会问,为什么我们必须创建一个接口和一个类,来定义一个单个的King类呢?你可能会告诉自己,现在Human接口还真的做不了太多事情,你说的绝对没错。
使用接口允许我们创建一类对象,但是,在学习多态之前,我们很难意识到这对程序来说意味着什么。
来看一下如下所示的方法。
public void feed(Human h) {
System.out.println("Feeding Human!");
h.eat();
}
该方法可以接受一个单个的Human类型的参数。实际上,它可以接受实现了Human接口的一个类的任何对象实例。这很有用,因为在单个的程序中,我们可能创建多个类,例如,Villain、Professor和SushiChef,而它们都扩展了Human接口。
这意味着如下所示的示例都能够工作。
// Elsewhere in same program
King kong = new King();
Villain baddie = new Villain();
Professor x = new Professor();
SushiChef chef = new SushiChef();
// Any Human can be fed:
feed(kong); // A King is Human
feed(baddie); // A Villain is Human
feed(x); // A Professor is Human
feed(chef); // A SushiChef is Human
这只是关于多态能够做什么的一个小例子,它是一种有趣的方式,描述了与多种类型的对象交互的一个通用方法。在后面的各章中,我们将以一个更加实用的方式介绍接口和多态。