当前位置: 首页 > 面试题库 >

上行下行

柳业
2023-03-14
问题内容

我有一个父母班class A和一个孩子班class C extends A

A a=new A();
C c=(C)a;

这给我错误。为什么?

另外如果我的代码是

A a=new A();
C c=new C();
c=(C)a;

这很好。

现在,我的c变量可以访问哪些所有方法?C中的方法还是B类中的方法?


问题答案:

它给您一个错误,因为a 它不是- 的实例C-因此您不可以对其进行下垂。试想一下,如果这 允许的-你可以这样做:

Object o = new Object();
FileInputStream fis = (FileInputStream) o;

当您尝试从流中读取内容时,您期望发生什么?您希望从哪个文件读取?

现在第二部分:

A a=new A();
C c=new C();
C c=(C)a;

那将 无法 正常工作-首先,即使您c两次声明相同的变量(),它也无法编译。如果你修复错误,你会 仍然 在尝试投的实例得到一个异常AC

但是,此代码是真正有效的:

A a = new C(); // Actually creates an instance of C
C c = (C) a; // Checks that a refers to an instance of C - it does, so it's fine


 类似资料:
  • 有几种安装 Nest 应用程序的方法。您可以创建一个 Web 应用程序,微服务或只是一个 Nest 执行上下文 。 Nest 上下文是 Nest 容器的一个包装,它包含所有实例化的类。我们可以直接使用应用程序对象从任何导入的模块中获取现有实例。由于这一点,您可以充分利用 Nest 框架的优势,包括 CRON 任务,甚至可以在其上构建 CLI 。 为了创建一个 Nest 应用程序上下文,我们使用下面

  • 简介 从本章开始,我将陆续(翻译、转载、整理)http://dmitrysoshnikov.com/网站关于ECMAScript标标准理解的好文。 本章我们要讲解的是ECMAScript标准里的执行上下文和相关可执行代码的各种类型。 原始作者:Dmitry A. Soshnikov 原始发布: 2009-06-26 俄文原文:http://dmitrysoshnikov.com/ecmascrip

  • 默认情况下,所有框都在普通流中定位,普通流包括块级框的块格式化、行内级框的行格式化、块级框和行内级框的相对定位。 在普通流中,不同类型的框,会参与不同的格式化上下文(Formatting Context),格式化上下文就是框的布局上下文,它规定了该上下文中的框如何排列,以及这些框之间的关系和相互作用。 普通流中的每个框,只能参与某一种格式化上下文,要么是块格式化上下文,要么是行格式化上下文。块级框

  • 我使用Spock框架来运行我的测试。每个测试类上都有Spring的注释。正如我所看到的,每个测试类都需要上下文,在不同的类中运行几十个测试需要很多时间。是否有一种方法可以配置Spock测试类以在公共spring上下文下运行?

  • 假设我有以下一组代码,可以在将来做一些事情: 假设我为这段代码提供了默认的ExecutionContext,我知道在后台会发生什么,但我想知道的是如何处理未来?我的意思是,应该有一些线程或一组线程可能会等待未来完成?这些线程被阻塞了吗?从某种意义上说,他们是在等待未来的结束? 现在在以下场景中: 假设x有一个超时,我可以这样调用: 我真的在阻挡吗?有没有更好的异步超时方法? 编辑:下面的超时比我上

  • 我使用的是SpringBatch 3.0。3并且需要一些关于不序列化作业执行上下文和步骤执行上下文的说明,因为我们有大型对象集,不希望将它们持久化到spring批处理表中。我们是否可以只存储短上下文而不是序列化对象?