在面向对象的范畴中,还存在多态的概念,多态建立在
继承关系的基础上。简单地理解,多态是指当一个 Java应用变量被声明为 Monkey类时,
这个变量实际上既可以引用 JMonkey类的实例,也可以引用 CMonkey类的实例。以下这
段程序代码就体现了多态:
Li st monkeys= bus iness Service . f indAllMonkeys ( ) i
Iterator it=monkeys.iterator();
while ( it . has Next ( ) ) (
Monkey in= (Monkey ) it . next ( ) i
if (m instance of JM on key)
System.out.println(m.getName(]+11.’十( (JMonkey)m). getColor());
else
Sys tern . out . pr intln (m . get Name ( ) + ” ” + ( ( CM on key ) m) . get Length ( ) ) i
BusinessService 类的 findAllMonkeysO方法通过 Hibernate API 从数据库中检索出所有
Monkey对象。findAllMonkeys()方法返回的集合既包含 JMonkey类的实例,
这种查询被称为多态查询。以上程序中变量m被声明为 Monkey类型,它实际上
既可能引用IMonkey类的实例,也可能引用 CMonkey类的实例。
此外,从 Team 类到 Monkey类为多态关联,因为 Team 类的 monkeys 集合中
可以包含 JMonkey类和 CMonkey类的实例。从Monkey类到 Team类不是多态关联,
因为 Monkey类的 team属性只会引用 Team类本身的实例。