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种,到处都是:

 

posted @ 2022-03-20 23:37  正在战斗中  阅读(105)  评论(0编辑  收藏  举报