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

在Java中作弊单一继承?

柳墨一
2023-03-14
问题内容

我听说有一种方法可以欺骗单一继承并在Java中实现多重继承。有谁知道如何实现这一点(不使用接口)?

出于好奇;-)


问题答案:

当然可以,但这很棘手,您应该真正考虑是否要这样做。
这个想法是结合使用基于范围的继承和基于类型的继承。出于内部目的,内部类“继承”外部类的方法和字段,这就是类型对话。这有点像mixin,其中将外部类混入到内部类中,但并不安全,因为您可以更改外部类的状态以及使用其方法。
Gilad
Bracha(Java语言的主要设计师之一)写了一篇论文讨论那个。因此,假设您想在一些不相关的类之间共享一些内部使用的方法(例如,用于字符串操作),则可以将它们的子类创建为具有所有所需方法的类的内部类,并且这些子类可以使用父类和外部类中的方法。


无论如何,对于复杂的类来说这很棘手,您可以使用静态导入(从Java 5开始)获得大多数功能。求职面试和酒吧测验的好问题;-)



 类似资料:
  • 我正在对一些代码进行基准测试,但我无法使它像使用那样快速运行,即使在使用完全相同的算法时也是如此。因此,我将源代码复制到自己的包中,并尝试了以下操作: 当我运行这个(在MacOS上运行jdk 1.8.0_144-B01)时,它会输出: 当我在未注释导入行的情况下运行它时: 使用JDK版本的BigInteger比我的版本快三倍,即使它使用的代码完全相同。 我已经用javap检查了字节码,并比较了使用

  • //为什么这是强制性的??? 当我做一个类派生从一个innerclass(Innerclass.后来我才知道,它需要包括一个构造函数采取封闭类引用为什么是这样?

  • 问题内容: 我们有下课: 输出为: 超 子 问题: 什么礼物?是父级的对象,哪个孩子作为字段保留? 如果是这样,抽象类的继承如何工作?您不能创建抽象类的实例。 如果不是,重写方法在哪里保留? 我尝试使用Google,但发现的只是关于如何继承类的常见信息。 更新: 您仍在告诉我明显的事情。也许我的问题没有引起误解,但我将尝试改写一下: 当我们使用调用方法时,您说的是,我们正在访问父级的方法。但是,如

  • 问题内容: 我正在考虑启动一个项目,该项目用于使用批注在Java中生成代码(我不会详细介绍,因为它并不重要)。我对项目的有效性和实用性感到好奇,令我震惊的是对Annontation Processor Tool(apt)的依赖。 我无法从经验中得知,我想知道的是在Java中使用注释处理的缺点是什么? 这些可以是任何东西,包括以下各项: 写处理器时很难做TDD 很难将处理包含在构建系统中 处理需要很

  • 问题内容: 我正在对一些代码进行基准测试,即使使用完全相同的算法,也无法使其运行速度与一样快。因此,我将源代码复制到自己的程序包中并尝试了以下操作: 当我运行此命令(在MacOS上为jdk 1.8.0_144-b01)时,它输出: 当我在未注释导入行的情况下运行它时: 即使使用完全相同的代码,使用BigInteger的JDK版本也要比使用我的版本快三倍。 我已经用javap检查了字节码,并在使用o

  • 问题内容: 我有超类和方法。如果我在继承的子类中重写了方法,或者必须始终编写它,是否会继承? 问题答案: 不,您将总是不得不写信。如果您调用超类的同步方法,则这当然是同步调用。不是方法签名的一部分。 有关Java线程负责人(等等)的Doug Lea的详细说明,请参见http://gee.cs.oswego.edu/dl/cpj/mechanics.html。