对泛型上下限(协变,逆变)理解的拙见

本文探讨了面向对象编程中的子类与父类之间的继承关系,强调了类型继承的层级限制以及转型的原则。在子类与父类的转换中,介绍了转型后方法调用的优先级,并解析了类型参数的上限`<? extends A>`和下限`<? super A>`的含义及其在取值时的注意事项。内容涉及面向对象的基本概念,适合初学者和进阶开发者阅读。
摘要由CSDN通过智能技术生成

首先要了解一下以下几点:

  • 子类是对父类的扩展,拥有比父类更多的内容,类似包裹关系。
  • 接收类型的继承关系级别要大于等于该类,也就是说只有其父类和本身能正常接收,否则需要强制转型。
  • 子类转型成父类,会让父类涌入很多新东西,包括重写的。而父类转型成子类,子类本就有了父类的所有内容(包括私有,只是不能使用),认为没得鸟用不推荐,则需要强制转型。
  • 转型后调用父类有的方法会优先调用子类中重写过的(说白了就是以子类为主,子类也有隐藏了的没有重写的父类方法)。

<? extends A>:

  1. A或继承自A的子类都能适应进去,而A的级别最大。
  2. 只知道最大级别是A和适应进去都是A或A的派生类,再存其他的会有其他的新内容,子类内容会越来越多是无法控制的,适应进去后不能再添加其他派生类,只能有这一系列类,可取值。
  3. 取值时,来接收的对象继承级别得是最大或已知最大的,因为不确定里面级别最大的是哪个类。如用Object或A接收。

<? super A>

  1. A或A的父类能适应进去,A的级别最小。
  2. A的级别最小,适应进去的父类其实内容是越来越小的且类的内容在A里都有(方法名,属性名等都知道),能添加其他父类,能取值。
  3. 取值时,不知道已知的最大父类,只能用Object对象来接收。

可能有些表述不清,如有矛盾,还请多多纠正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值