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

为什么上播不显示运行时多态性?

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

为什么上播不显示运行时多态性?

S a = (S)new A();

让我们看看这里有什么:

  1. 可变
    a
    的的, 引用类型
    S
    ;
  2. 一个实例创建表达式,产生一个对象类型
    A
    ,其中
    A extends S
    ;
  3. 一个 向上转型表达式参考 ,向上转型上述表达式成型
    S
    ;
  4. 将3.的结果分配给变量
    a

阅读Java时,您必须牢记以下几点:

  • 对象类型 :对象永远不能更改其类型。在您的示例中,对象的类型为
    A
  • 引用类型 :在您的示例中,您将类型最初的引用转换为类型
    A
    的引用
    S
    。您已将该引用分配给
    a

当您在对象上调用方法时,实际调用的方法完全不取决于 引用 的类型,而仅取决于 对象 本身的类型。

A
因此,对象的类型
A
就是类型中的方法被调用。

另一方面,当您访问实例变量时,多态性将不适用,并且引用的类型变得必不可少。随着

a.i
您访问
i
的超宣布
S
,与
((A)a).i
您访问
i
A
。请注意,该类
A
拥有
两个 实例变量,都名为
i
,您可以单独引用每个实例变量。


术语说明

术语“参考类型”实际上是更正确的“产生参考的表达类型”的简写。这是一个纯粹的编译时工件:在运行时没有与引用相关联的类型信息,它只是一种位模式。将此与对象的类型(仅是
运行时 工件)进行对比:编译器通常不知道表达式中所涉及的对象的类型,而只是对其进行 断言
。当此类断言在运行时失败时,结果是ClassCastException。



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

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

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