iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java中super和extends的作用是什么
  • 553
分享到

Java中super和extends的作用是什么

2023-06-20 19:06:11 553人浏览 独家记忆
摘要

Java中super和extends的作用是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。List<? extends T>表示该集合中存在的都是类型T的子

Java中super和extends的作用是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

  • List<? extends T>表示该集合中存在的都是类型T的子类,包括T自己

  • List<? super T>表示该集合中存的都是类型T的父类,包括T自己

代码样例解读

父子类代码:

static class Biological{}static class Animal extends Biological{}static class Plant extends Biological{}static class Dog extends Animal{}static class Cat extends Animal{}static class Flower extends Plant{}static class Tree extends Plant{}

关系图:

Java中super和extends的作用是什么

测试代码:

public static void main(String[] args) {    List<? super Animal> listA = new ArrayList<>();    List<? extends Plant> listB = new ArrayList<>();    //listA.add(new Biological());      listA.add(new Animal());    listA.add(new Dog());    //listA.add(new Flower());    Object object = listA.get(0);    //listB.add(new Plant());    //listB.add(new Flower());    listB.add(null);    Plant plant = listB.get(0);}

关于List<? super T>

add方面

List<? super Animal> listA = new ArrayList<>();
listA.add(new Biological());

执行上面这行代码是不允许的,因为listA的集合类型是Animal或者更高的父类,想一下如果代表的类型是Animal,那怎么允许add它的父类Biological呢?当然不允许了。

listA.add(new Animal());listA.add(new Dog());

执行上面这两句就是可以正常执行的,因为无论是Animal还是Animal的子类Dog,都是可以存到集合类型是Animal或者更高的父类的集合中的。有点拗口,不过就是这个意思。

listA.add(new Flower());

添加Flower当然是不可以的,因为它不是Animal的子类。

返回值方面

Object object = listA.get(0);

因为listA的集合类型是Animal或者更高的父类,所以不清楚到底会是哪个类,但是我们都应该清楚所有类的父类都是Object,所以返回值是Object类型的。

关于List<? extendsT>

add方面

List<? extends Plant> listB = new ArrayList<>();
listB.add(new Plant());

执行上面的代码是不允许的,因为listB的集合类型是Plant或Plant的子类,想一下如果代表的类型是Plant的子类Tree,那么怎么可能可以add它的父类Plant呢?所以跟上面的那个理解差不多,就是反过来理解。看图可以更加清晰。

listB.add(new Flower());

这个同理,如何代表的类型是Flower的子类Rose(玫瑰花),这样当然不可以add它的父类Flower了。

listB.add(null);

特殊情况就是这个,可以add null,但是也没意义啊。

返回值方面
Plant plant = listB.get(0);

因为listB的集合类型是Plant或者它的子类,所以不清楚到底会是哪个类,但是我们可以知道,最高的类型就是Plant了,所以返回值就是Plant类型的。

总结

  • List<? super T>表示该集合中存的都是类型T的父类,包括T自己

    • add:不能add任何对象(特例:可以添加null)

    • get:get返回的对象类型为T

  • List<? extends T>表示该集合中存在的都是类型T的子类,包括T自己

    • add:只能添加T及T的子类

    • get:get返回的对象类型为Object

关于Java中super和extends的作用是什么问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网精选频道了解更多相关知识。

--结束END--

本文标题: Java中super和extends的作用是什么

本文链接: https://www.lsjlt.com/news/299728.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java中super和extends的作用是什么
    Java中super和extends的作用是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。List< extends T>表示该集合中存在的都是类型T的子类...
    99+
    2023-06-20
  • Java 中super T和extends T的区别是什么
    Java 中super T和extends T的区别是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。extendsList< extends Nu...
    99+
    2023-06-17
  • Java中的this和super区别是什么
    这篇文章主要介绍“Java中的this和super区别是什么”,在日常操作中,相信很多人在Java中的this和super区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java中的this和supe...
    99+
    2023-06-25
  • java中this和super的区别是什么
    java中this和super的区别是什么?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、We...
    99+
    2023-06-14
  • 一篇文章带你了解Java泛型的super和extends
    目录概念简单理解代码样例解读关于List<? super T>add方面返回值方面关于List<? extendsT>add方面返回值方面总结...
    99+
    2024-04-02
  • js中class类、super和extends关键词的示例分析
    小编给大家分享一下js中class类、super和extends关键词的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!正文1.es6之前创建对象先来看下e...
    99+
    2023-06-20
  • Java中super关键字的用法和细节是什么
    这篇文章将为大家详细讲解有关Java中super关键字的用法和细节是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Java的优点是什么1. 简单,只需理解基本的概念,就可以编写适合于各种...
    99+
    2023-06-26
  • Java中的this和super怎么用
    本篇内容主要讲解“Java中的this和super怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中的this和super怎么用”吧!  在Java中有两个非常特殊的变量:this和...
    99+
    2023-06-03
  • java super()方法的用法是什么
    Java中的super()方法用于调用父类的构造方法。它必须作为子类构造方法的第一行语句出现,用于显式调用父类的构造方法以完成父类的...
    99+
    2023-10-23
    java
  • java中super与this的区别是什么
    java中super与this的区别:super是当前对象里面的父对象的引用,而this指的是当前对象的引用。super调用基类中的某一个构造函数,而this调用的是本类中另一种形成的构造函数。super是用来访问直接父类中被隐藏的父类中成...
    99+
    2024-04-02
  • java中this和super有什么不同
    这期内容当中小编将会给大家带来有关java中this和super有什么不同,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java有哪些集合类Java中的集合主要分为四类:1、List列表:有序的,可重复的...
    99+
    2023-06-14
  • Class中Extends和Implements属性的区别是什么
    这篇文章给大家介绍Class中Extends和Implements属性的区别是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。<span >var Animal = ne...
    99+
    2024-04-02
  • java中this和super有什么区别
    这篇文章将为大家详细讲解有关java中this和super有什么区别,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Java有哪些集合类Java中的集合主要分为四类:1、List列表:有序的,...
    99+
    2023-06-14
  • java中super和this有什么区别
    在Java中,super和this是两个关键字,用于引用父类和当前类的实例。1. super关键字:- super关键字用于引用父类...
    99+
    2023-08-11
    java
  • python类中super()和__init__()的区别是什么
    这期内容当中小编将会给大家带来有关python类中super()和__init__()的区别是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。前言今天来谈谈super()和——init_()它们之间的区...
    99+
    2023-06-02
  • Java中SortedMap和NavigableMap的作用是什么
    本篇文章给大家分享的是有关Java中SortedMap和NavigableMap的作用是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、前言由于乱序的数据对查找不利,例如...
    99+
    2023-06-15
  • java中super关键字有什么用
    在Java中,super关键字有以下几种用途:1. 调用父类的构造方法:在子类的构造方法中,可以使用super关键字来调用父类的构造...
    99+
    2023-08-24
    java super
  • Java 中的 this 和 super 区别
    目录1、简介2、引子2.1 父类中声明无参构造函数2.2 子类显示的通过super调用父类的有参构造函数3、this4、super 5、总结5.1 对比差异 5.2 相同点 5.3 ...
    99+
    2024-04-02
  • python中super是什么意思
    python中super是一个用来调用父类的方法,主要用来解决多重继承问题的,如果直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序、重复调用等种种问题;super的语法格式为:“super(type[, ...
    99+
    2024-04-02
  • Java和kotlin的作用域是什么
    Java和Kotlin都有作用域的概念,作用域指的是代码中变量或函数的可见范围。在Java中,作用域可以分为以下几种:1. 类级作用...
    99+
    2023-08-16
    java kotlin
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作