向上转换及其对堆的影响

2023-12-22

对于以下课程:

public class Parent {
//Parent members
}

public class ChildA : Parent {
//ChildA members
}

public class ChildB : Parent {
//ChildB members
}

如果我将 ChildA 或 ChildB 实例向上转换为 Parent 实例,那么我无法访问它们的成员,但它们的成员仍然存在,因为如果我向下转换并尝试再次访问它们的成员,我会发现它们仍然拥有数据。

我认为这意味着父实例不断为子类分配内存。

那么,这是否意味着当我实例化一个父类时,它会为子类成员分配内存,或者这只是在我进行强制转换时发生?

如果我们前后进行转换,父级是否可以为多个子级分配内存?


在上面描述的情况下,转换不会影响从基类转换为子类时分配的内存,反之亦然。

如果实例化一个 Parent,内存中就会有一个 Parent 对象。如果您将其强制转换为任何一个子类,它将失败并显示InvalidCastException.

如果实例化任一子对象,内存中就会有一个子对象。您可以将其投射到父级,然后再返回。在这两种情况下,内存分配都不会改变。

此外,如果您实例化一个 Child's,转换为 Parent,然后尝试转换为 Child,您将得到一个InvalidCastException

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

向上转换及其对堆的影响 的相关文章

随机推荐

  • php 文件上传时间创建

    我知道有一种方法可以使用 PHP 获取文件夹中的文件名列表 but 目前有什么方法可以获取使用 php 上传 创建文件的日期 时间吗 Unix 不跟踪文件的创建时间 只跟踪文件的更改 修改和访问时间 您可以使用文件时间 https www
  • 从命令行参数打开文件

    我正在尝试创建一个汇编程序 该程序创建在命令行 argv 1 上指定的文件 如果字符串已经存储在其中 它工作得很好 但是如果我按原样运行它 而 file name 没有移动到 rbx 它工作得很好 section text global s
  • dynamodb.put().promise() 不返回 put 对象

    我正在尝试利用 aws 和 dynamo db 的异步 等待功能 下面是如何在 async wait 之前放置对象的示例 正 如您在回调中看到的 您可以访问包含放置对象的数据 然而 在使用 async 和 Promise 的第二个代码块中
  • 编码 Katas 用于练习重构遗留代码

    近几个月来 我对 katas 编码非常感兴趣 我相信它们是磨练我的编程技能和提高我在工作中编写的代码质量的好方法 有很多地方都可以找到卡塔斯 喜欢 http codekata pragprog com http codekata pragp
  • 如何将宽字符串文字与 PRId32、PRIu64 等连接?

    假设我需要打印一个格式化的字符串int32 t使用 printf 格式说明符
  • java中new String[]{}和new String[]的区别

    I am fresher在java中 我对java有疑问 那是 String array new String 有什么用 here 有什么区别String array new String and String array new Stri
  • 模糊图像的特定部分(矩形、圆形)?

    我想模糊矩形或圆形图像 经过谷歌搜索后 我发现模糊整个图像很容易 但很难模糊图像的特定部分 矩形 圆形 那么怎么可能呢 提前致谢 只需设置你的UIImageView属性名称为 imageView 并在实现文件中以相同的顺序添加以下四个方法
  • ggvis 交互式图形无法按预期使用反应值工作

    我对以下示例有问题ggvis代码的目的是制作一个绘图 当您将鼠标悬停在该组的任何成员上时 突出显示整个点组 然后 我希望突出显示在您将鼠标悬停后立即消失 发生的情况是 突出显示最初起作用 但当您将鼠标悬停时 突出显示会保留下来 并且只有当您
  • 当填充大型可观察数组时,我可以加快淘汰速度吗?

    我有一个 Web 应用程序 它对某些数据执行 SOAP 请求 并使用结果填充淘汰视图模型 我目前收到了大约 1000 个订单项 必须将它们推送到我的淘汰视图模型上 在 Chrome 中对页面进行分析表明 大部分加载时间 CPU 都花费在 K
  • .htaccess 重定向到 HTTPS(子域除外)

    我想将所有非 https 请求重定向到 https 接受对子域的请求 例如 http example com gt https example com http example com page gt https example com p
  • Laravel:如何使用查询生成器添加 where 子句?

    我有这个查询 使用 Laravel 查询生成器进行 rows DB table elements gt where type 1 对应于 SELECT from elements WHERE type 1 现在 在某些情况下 我需要添加第二
  • iMacros 等待页面加载

    我过去一直使用 iMacros 让宏等待页面加载非常简单 设置 等待页面完成 是然而现在这不起作用 从 iMacros 网站看来http wiki imacros net 等待页面完成 http wiki imacros net WAITP
  • 使用 Volley 且不使用 HttpEntity 处理 POST 多部分请求

    这并不是一个真正的问题 但是 我想在这里分享一些我的工作代码 供您需要时参考 据我们所知HttpEntity从 API22 开始弃用 并从 API23 开始完全删除 目前 我们无法访问Android 开发人员上的 HttpEntity 参考
  • 以编程方式删除焦点?

    我有一个 jquery ui 对话框 其中包含动态加载的选项卡 JSON 内容 由于复杂性 我无法真正发布小提琴或相关代码 代码太多 发生的情况是 当对话框打开时 您可以通过选项卡浏览对话框中的元素 直到第一个选项卡 之后 您将无法通过 T
  • 在 Swift 中转换字符和 CodePoint

    我可以直接在 Swift 字符与其 Unicode 数值之间进行转换吗 那是 var i Int A plain integer index var myCodeUnit UInt16 myString utf16 i Would like
  • 在Android中使用System.img的目的是什么?

    Android 中的 System img 是什么意思 使用它的目的是什么 它是Android文件系统 这意味着Android需要的所有支持文件 应用程序 还有框架 Dalvik VM 初始化脚本等 文件系统的另一部分是 userdata
  • Android 应用程序 - 如何将画布上的位图绘图保存为图像?检查代码?

    我尝试使用以下代码 在画布上绘制 将画布保存到图像上 问题 当我尝试保存图像时 它显示空指针错误并且没有保存任何内容 请帮助我找到代码的问题或建议我一个替代方案 它的作用完全相同 提前致谢 在画布上绘制的代码 package com exa
  • 我想在单击 onTap 时更改作为 ListView 子级的 Custom ListTile 的颜色,并将其他子级颜色设置为默认颜色?

    在抽屉中 在列表视图中 想要在单击 onTap 时更改自定义 ListTile 的颜色并将所有其他子项的颜色设置为默认值 class CustomListTile extends StatelessWidget final Color it
  • 在不同项目之间共享node_modules

    我正在开发各种 Angular 2 项目 我想在多个项目之间共享 node modules 文件夹 我想创建一个这样的结构 MainFolder Project1 Project2 package json 所以我所有的项目都只有 1 个
  • 向上转换及其对堆的影响

    对于以下课程 public class Parent Parent members public class ChildA Parent ChildA members public class ChildB Parent ChildB me