本篇内容主要讲解“Java中super与extends有什么区别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中super与extends有什么区别”吧!// compile error
// List extends Fruit> appList2 = new ArrayList();
// appList2.add(new Fruit());
// appList2.add(new Apple());
// appList2.add(new RedApple());
List super Fruit> appList = new ArrayList();
appList.add(new Fruit());
appList.add(new Apple());
appList.add(new RedApple());————————————————————————————————-胖君he who transplants sustains1,200 人赞同了该回答题主说的 extends T>和 super T>是Java泛 香港云主机型中的“通配符(Wildcards)”和“边界(Bounds)”的概念。 extends T>:是指“上界通配符(Upper Bounds Wildcards)” super T>:是指“下界通配符(Lower Bounds Wildcards)”使用泛型的过程中,经常出现一种很别扭的情况。比如按照题主的例子,我们有Fruit类,和它的派生类Apple类。
然后有一个最简单的容器:Plate类。盘子里可以放一个泛型的“东西”。我们可以对这个东西做最简单的“放”和“取”的动作:set( )和get( )方法。
现在我定义一个“水果盘子”,逻辑上水果盘子当然可以装苹果。
但实际上Java编译器不允许这个操作。会报错,“装苹果的盘子”无法转换成“装水果的盘子”。
所以我的尴尬症就犯了。实际上,编译器脑袋里认定的逻辑是这样的:苹果IS-A水果装苹果的盘子NOT-IS-A装水果的盘子所以,就算容器里装的东西之间有继承关系,但容器之间是没有继承关系的。所以我们不可以把Plate的引用传递给Plate
翻译成人话就是:一个能放水果以及一切是水果派生类的盘子。再直白点就是:啥水果都能放的盘子。这和我们人类的逻辑就比较接近了。Plate和Plate最大的区别就是:Plate是Plate
如果把Fruit和Apple的例子再扩展一下,食物分成水果和肉类,水果有苹果和香蕉,肉类有猪肉和牛肉,苹果还有两种青苹果和红苹果。
在这个体系中,上界通配符 “Plate” 覆盖下图中蓝色的区域。相对应的,“下界通配符(Lower Bounds Wildcards)”:表达的就是相反的概念:一个能放水果以及一切是水果基类的盘子。Plate是Plate
这篇文章主要介绍笔记本键盘上fn键怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Fn是“Function”(功能)的缩写,一般Fn键位于笔记本键盘最左下角第二个位置。正常情况,Fn键不能单独使用,需要F1-F12等键组合快捷键使用…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。