java基础-super关键字
关键字:super、父类、继承、泛型。
从网上收罗了不少文章,整理了下。
super这个关键字常用于以下几个情况,目前只收了2种:
1.访问父类方法
2.在泛型中限定泛型的范围
一、继承和访问父类
这个可以参考 http://c.biancheng.net/view/6394.html
这个很好理解。
1.调用父类构造函数
例如 super('a'),super('a','b');
2.调用父类的特定方法
二、限定泛型范围
这个可以参考https://www.cnblogs.com/zhaoyibing/p/9051428.html
这个稍微复杂一点点,但主要内容则是原作者的几句文字:
频繁往外读取内容的,适合用上界Extends。 经常往里插入的,适合用下界Super。
为了能够快速理解,本文摘录几个要点:
1.语法
<? extends T> 和 <? super T> 是Java泛型中的“通配符(Wildcards)” 和 “边界(Bounds)”的概念
- <? extends T> 是指 “上界通配符(Upper Bounds Wildcards)”
- <? super T> 是指 “下界通配符(Lower Bounds Wildcards)”
2.两个概念的区别
所以,就算容器里装的东西之间有继承关系,但容器之间是没有继承关系的。所以我们不可以把Plate<Apple>的引用传递给Plate<Fruit>。
为了让泛型用起来更舒服,Sun的大脑袋们就想出了<? extends T>和<? super T>的办法,来让“水果盘子” 和 “苹果盘子”之间发生关系。
Plate<? extends Fruit> p=new Plate<Apple>(new Apple());
3.原则-PC
PECS(Producer Extends Consumer Super)原则
这些都能理解,但最好自己做一下例子,加深以下印象。
这种场景使用泛型的相对比较少,但也不是没有,当需要的时候,能想起来就很好了!
泛型类型在spring种,到处都是: