栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Base b2 = new Child()是什么?表示?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Base b2 = new Child()是什么?表示?

查看语句的两个部分:

base b2

声明一个名为

b2
type 的变量
base
。如果引用为null或引用的实例
base
或的子类,则可以为该变量分配引用
base

然后

new Child()

创建的新实例

Child
Child
是的子类
base
,因此您可以将构造函数返回的引用分配给
b2
变量。

现在,即使实际值引用了执行时的实例,您也只能“查看”

base
through的成员。但是,从任何方法已被 覆盖
在将使用的时候,他们是所谓的重写版本......所以,当你打电话
b2``Child``base
__
Child

b2.subtract();

JVM找到引用的对象的 实际 类型

b2
,并使用该类的实现
subtract
-在这种情况下,该方法将显示“ Child Subtract”。

编辑:您专门询问了在哪里可以使用这种东西,以及它如何帮助…

您可以随时使用它来声明更通用类型的变量(超类或接口),但可以为其分配一个值,该值恰好是该接口的子类或实现。再举一个例子:

List<String> strings = new ArrayList<String>();

以一般方式声明变量的主要优点是可以保持灵活性-
稍后可以将的使用从

ArrayList<T>
改为其他实现
List<T>
,并且代码仍然可以正常工作。您基本上是在说:“我只需要提供的成员和担保
List<T>
-我正在使用的事实
ArrayList<T>
有点偶然。”

一个类似的示例是确定方法应返回的类型-
通常,您只想声明您返回的是常规类型(或接口),即使实现知道返回的是哪种具体类型。这隐藏了实现细节,使您以后可以更改它们。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/486745.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号