泛型受限中的继承关系与多态无关

1. 什么是多态?

  • 多态(Polymorphism)简单解释就是以一个类为类型的变量接收其它类的实例,其中涉及到对象数据类型的自动转换(即向上转型)。

2. 泛型受限中,存在继承关系的泛型参数之间为什么不构成多态?

  • 在泛型受限中,只是通过继承关系来限定兼容范围,且泛型参数本身只会影响对象底层存储的值,并不会对对象所属的数据类型产生作用,因此不具备构成多态的基础条件。

3. 举例说明

  • 代码示例中,list1、list2、list3是并列关系,都是List接口变量指向实现类ArrayList的实例,因此构成了多态;并且它们的底层都是Object类型的数组,所以三个对象在本质上完全相同。
  • 此处的泛型下限<? super Student>对兼容范围进行了限制,只能够兼容Student、Teenager、Person三个类别,不兼容FemaleStudent。
  • 此外,泛型参数在此处起到的作用仅仅是限制录入数据的类型,但是无论传入的是Student类型的数据,还是Teenager类型的数据,在录入底层的Object类型数组后,都会被向上转型为Object类型的元素,因此list1、list2、list3的区别仅仅在于底层相同类型的数组中存储的具体的值不同。

4. 总结

  • 多态:一个类型的变量接收另一个类的实例,涉及对象数据类型的转换(即“向上转型”);

  • 泛型受限:仅限定兼容的范围。且泛型参数仅影响对象底层存储的值,不会影响对象本身的数据类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值