什么是多态,多态查询又是什么?

在面向对象的范畴中,还存在多态的概念,多态建立在

继承关系的基础上。简单地理解,多态是指当一个 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类本身的实例。

多态是面向对象编程中的一个重要概念,指同一种行为具有多种不同表现形式或形态的能力。简单来说,就是同一个方法调用可以有不同的执行结果。 举个例子,我们可以定义一个“动物”类,其中有一个“叫声”方法。然后再定义不同的子类,如“狗”、“猫”、“鸟”等,它们都继承了“动物”类,并对“叫声”方法进行了不同的实现。接着我们可以创建一个“动物”类型的变量,通过不同的赋值来调用不同的子类实现的“叫声”方法,这就是多态的体现。 下面是一个简单的Java代码示例: ```java class Animal { public void makeSound() { System.out.println("动物发出叫声"); } } class Dog extends Animal { public void makeSound() { System.out.println("汪汪汪"); } } class Cat extends Animal { public void makeSound() { System.out.println("喵喵喵"); } } public class PolymorphismDemo { public static void main(String[] args) { Animal animal1 = new Dog(); Animal animal2 = new Cat(); animal1.makeSound(); // 输出:汪汪汪 animal2.makeSound(); // 输出:喵喵喵 } } ``` 在上面的代码中,我们先定义了一个“动物”类,其中有一个“叫声”方法。然后又定义了“狗”和“猫”两个子类,它们都重写了“叫声”方法。最后在主方法中,我们创建了两个“动物”类型的变量,分别赋值为“狗”和“猫”类的实例。当调用它们的“叫声”方法时,实际执行的是各自重写的方法,而不是“动物”类中定义的方法。这就是多态的体现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值