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

Java强制扩展类

宰父俊彦
2023-03-14
问题内容

在Java中,我可以以某种方式强制某个扩展了抽象类的类以将Object作为参数实现其构造函数吗?

就像是

public abstract class Points {

    //add some abstract method to force constructor to have object.
}

public class ExtendPoints extends Points {

    /**
     * I want the abstract class to force this implementation to have
     *  a constructor with an object in it?
     * @param o
     */
    public ExtendPoints(Object o){

    }
}

问题答案:

您可以在抽象类中使用带有参数的构造函数(如果要禁止匿名子类,请将其保护)。

public abstract class Points{
    protected Points(Something parameter){
        // do something with parameter
    }
}

这样做会强制实现类具有显式构造函数,因为它必须使用一个参数来调用超级构造函数。

但是,您不能强制覆盖的类具有带有参数的构造函数。它总是可以伪造这样的参数:

public class ExtendPoints extends Points{
    public ExtendPoints(){
        super(something);
    }
}


 类似资料:
  • 问题内容: ** 这可能吗?如果不是,为什么在Java中这不可能呢? ** 我认为我正在寻找的主题是此处“协变类型”,但是它晦涩难懂,并且不能解决我的问题。 问题答案: 这是一个直观的示例,说明如何使错误变得可怕:

  • 这里是优化 HTML5 Boilerplate 主题的一些建议。因为并不是所有的特性都适合具体的需求,所以我们没有默认导入这些特性。 App Stores 安装 Chrome 插件 用户可以直接从网站安装 Chrome 应用,前提是该应用已经通过谷歌的网络管理工具接驳了网站。更多信息详见内置 Chrome 商店的开发文档。 <link rel="chrome-webstore-item" href

  • Ark 容器和 Ark Plugin 在运行时由不同的类加载器加载,不能使用常规的 ServiceLoader 提供 SPI 扩展,SOFAArk 自定义扩展点 SPI 机制, Ark Plugin 实现 SPI 机制,考虑到 Biz 卸载问题,Ark Biz 暂时不支持该 SPI 机制,只适用于 Ark Plugin 之间。 声明扩展接口 使用注解 @Extensible 声明扩展接口,注解定义

  • 问题内容: 我想扩展ArrayList,为特定类添加一些方法,这些类的实例将由扩展的ArrayList保存。下面是一个简化的说明性代码示例。 这对我来说似乎是明智的,但是我对Java还是很陌生,我看到了其他阻碍扩展ArrayList的问题,例如,扩展ArrayList和创建新方法。我对Java的理解不够了解。 在我先前的尝试中,我最终在ThingContainer中创建了许多实际上是传递给Arra

  • 问题内容: 我有一个枚举,我们称它为A: 我有一个需要枚举A的函数: 如何创建另一个枚举,可能调用B并传递给 functionA ?像这样吗 我知道您无法扩展枚举,但是我还有哪些其他选择?实现此目标的最佳方法是什么? 问题答案: 你不能 枚举类型在设计上是最终的。 原因是每个枚举类型都应 仅 具有 在枚举中声明的元素 (例如,我们可以在switch语句中使用它们),如果允许扩展类型,则不可能。 您

  • 假设我使用TYPO3 7.6 Composer安装。现在我遇到了以下问题: 最新版本中的扩展在ext_emconf.php定义了所需的TYPO3-Version 我已经在TYPO3 7中测试了扩展,没有任何问题。在一个无作曲家安装,我可以通过扩展管理器安装扩展,并回答警告"我知道我在做什么",但与作曲家我不能安装扩展! 我是说是的我可以 > 等待开发者更新... 分叉扩展并更改ext_emconf