有没有办法保证Java中的接口扩展类?

2024-01-25

假设我有以下情况:

public abstract class Vehicle {
  public void turnOn() { ... }
}

public interface Flier {
  public void fly();
}

有没有一种方法可以保证任何实现的类Flier还必须延长Vehicle?我不想让Flier一个抽象类,因为我希望能够以类似的方式混合其他一些接口。

例如:

// I also want to guarantee any class that implements Car must also implement Vehicle
public interface Car {
  public void honk();
}

// I want the compiler to either give me an error saying
// MySpecialMachine must extend Vehicle, or implicitly make
// it a subclass of Vehicle. Either way, I want it to be
// impossible to implement Car or Flier without also being
// a subclass of Vehicle.
public class MySpecialMachine implements Car, Flier {
  public void honk() { ... }
  public void fly() { ... }
}

Java 接口不能扩展类,这是有道理的,因为类包含无法在接口中指定的实现细节。

处理这个问题的正确方法是将接口与实现完全分离,将Vehicle也进入一个界面。这CarETC。可以延长Vehicle接口强制程序员实现相应的方法。如果您想在所有人之间共享代码Vehicle实例,那么您可以使用(可能是抽象的)类作为任何需要实现该接口的类的父类。

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

有没有办法保证Java中的接口扩展类? 的相关文章

  • 接口的隐式和显式实现

    在进行升级时 我碰巧遇到了这样的代码 interface ICustomization IMMColumnsDefinition GetColumnsDefinition class Customization ICustomization
  • 使用可执行 JAR 时指定 Log4j2 配置文件

    使用可执行 JAR 文件时 我在指定 Log4j2 配置文件位置时遇到问题 如果我将所有 JAR 分开 效果很好 但是当我尝试将它们组合成一个可执行 JAR 文件时 由于某种原因log4j2 xml未从命令行获取文件 我尝试过这两种指定位置
  • 如何使用 Java2D 创建硬件加速图像?

    我正在尝试创建一个快速图像生成器 它可以执行大量 2d 转换和形状渲染 因此我尝试使用 BufferedImage 然后获取 Graphics2D 对象来执行所有绘图 我现在主要关心的是 make 速度非常快 所以我创建一个像这样的 Buf
  • 如何使用 Selenium WebDriver 和 Java 滚动特定的 DIV?

    WebDriver 无法识别某些 WebElement WebDriver 无法找到浏览器可见区域中不可见的元素 In order to make the WebElement viewable by WebDriver We need t
  • 对 Java Servlet 进行单元测试

    我想知道对 servlet 进行单元测试的最佳方法是什么 只要内部方法不引用 servlet 上下文 测试内部方法就不是问题 但是测试 doGet doPost 方法以及引用上下文或使用会话参数的内部方法呢 有没有办法简单地使用经典工具 例
  • 在java中迭代日期

    我需要遍历一系列日期 不确定如何在 for 循环中获取第二天 我在用java util Date So plusDays 1 不能在 for 循环中用于获取下一个日期 Used date1 new Date date1 getTime 10
  • 如何统计lucene索引中每个文档的term数?

    我想知道 lucene 索引中每个文档的术语数量 我一直在 API 和互联网上搜索 但没有结果 你能帮助我吗 Lucene 的构建是为了回答相反的问题 即哪些文档包含给定术语 因此 为了获取文档的术语数量 您必须进行一些修改 第一种方法是存
  • 结果显示图像上有衬里

    我正在使用 opencv 和 android ndk 下面是我的 jni 代码 void Vignete Mat img1 Mat img2 Mat out resize img1 img1 img2 size img1 convertTo
  • 如何使用二叉树中的递归来完成回溯

    我正在尝试插入一个二进制节点 我的代码很复杂 没有希望挽救它 所以我计划重写它 基本上我没有考虑回溯 也没有仔细考虑算法 我正在尝试使用顺序遍历插入二进制节点 但我不明白应该如何回溯 D B E A C F 我如何搜索根 D 的左子树 然后
  • RecyclerView:禁用焦点变化引起的滚动

    TL DR我有一个RecyclerView of EditTexts 当用户注意力集中时EditText 1并点击EditText 2 我想EditText 2获得焦点 但我不想要ReyclerView滚动 我怎样才能实现这个目标 我正在尝
  • android.R.layout.simple_list_item_1是什么?

    在我看到的所有示例中 他们在创建 ArrayAdapter 时仅使用 android R layout simple list item 1 android R layout simple list item 1是什么 它只是一个名为sim
  • 通过命令行参数更改默认的 ant 目标

    最近我被分配了一个任务 让ant能够为不同的环境构建war包 除了一项功能外 我几乎完成了 蚂蚁接受一个env参数类似 Denv DEV 并使用不同的配置文件来制作war包 但默认目标是start它将构建 部署并启动 tomcat 我不希望
  • AWS Java SDK 中 DynamoDB v2 的迁移详细信息?

    有没有人对新的命名空间进行了更改 com amazonaws services dynamodbv2 以及 AWS Java SDK 1 4 2 及更高版本 中 DynamoDB 的接口 本地二级指数的发布显然需要根据1 4 2 发行说明
  • 如何指示 yum 安装特定版本的 OpenJDK

    我尝试安装openjdk in the redhat服务器 如何安装指定版本 我要安装的版本是 11 0 4 使用以下命令安装的版本是11 0 6 yum install java 11 openjdk devel 曾与 yum showd
  • 术语“可序列化”是什么意思? [复制]

    这个问题在这里已经有答案了 不太确定我读过的定义可序列化实际上做了什么 import java io Serializable import java text StringCharacterIterator import java uti
  • CompletableFuture 的多个 thenAccept 块的执行顺序是什么

    所以我有一个返回a的方法CompletableFuture 在返回之前 此方法添加一个块thenAccept这是在之后执行的CompletableFuture完成 此方法的调用者还添加了另一个块thenAccept 显然 这可以通过多个链式
  • 为什么在 this 方法中添加 If 语句会大大降低速度?

    我在中遇到过这个回答另一个问题 https stackoverflow com questions 12233594 faster way to apply alpha to a jpeg in an android app 我试图诊断哪些
  • 所有语言中特殊字符的 Java 正则表达式

    在我的用户输入字段中 我想允许某些特殊字符 字母和数字的组合 我应该确保正则表达式模式在输入时允许此设置任何语言 基本上我构建的这个正则表达式也应该支持 unicode 表示 如何使用 Java 中的 Pattern 类来实现这一点 这里给
  • 获取给定字符串日期中该月的最后一天

    我的输入字符串日期如下 String date 1 13 2012 我得到的月份如下 SimpleDateFormat dateFormat new SimpleDateFormat MM dd yyyy Date convertedDat
  • 如何将 Hibernate 5 安装到 Apache Karaf v4 中

    我已经安装了 Apache Karaf v4 03 并查询了 Hibernate 的可用功能列表 如下所示 不幸的是 我使用的是 Hibernate v5 hibernate 3 3 2 GA Uninstalled enterprise

随机推荐

  • 是否可以在 Angular 2 上创建组件抽象?

    我想创建一个具有初始行为的 AbstractComponent 同时能够在需要时在子组件上覆盖它 这可能吗 这是一个好的做法吗 应该看起来或多或少像这样 export abstract class AbstractComponent imp
  • 如何计算出移动物体的未来位置? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我正在创建一个小游戏 我有一个光子鱼雷 它从一艘船上向目标发射 现在 由于鱼雷的速度很慢 如果目标正在移动 船将永远不会击中任何目标 我想解决这个问题
  • 如何在没有用户和登录的情况下使用JWT?

    我正在 Node js 中制作一个简单的文件转换器 API 并且希望避免请求中的滥用 所以我正在寻找一种无需 userModel 登录等即可使用 JWT 的方法 但我不能在网上做事 谢谢 我们不需要用户或登录来创建 JWT 我们可以使用任何
  • Mercurial 删除历史记录

    Mercurial 有没有办法从数据库中删除旧的变更集 我有一个 60GB 的存储库 这使得克隆变得非常痛苦 我想在某个日期之前删除所有内容 并将庞大的数据库收起来以收集灰尘 没有简单 推荐的方法可以直接对现有存储库执行此操作 但是 您可以
  • 为什么 PDO 异常错误没有被捕获?

    我有一个 PHP 脚本 在 SQL 查询语句中存在两个故意的拼写错误 try stmt dbh gt prepare SELECT COUNT FROM Product WHERE non existent column stmt gt b
  • 如何使用javascript的reduce函数来计算满足特定条件的项目的平均值?

    因此 假设我有以下对象数组 var arr name John score 8 8 name John score 8 6 name John score 9 0 name John score 8 3 name Tom score 7 9
  • 如何用纯css凹出一条直线

    diamond width 40px height 40px transform rotate 45deg background red div div 我正在尝试用 css 创建一个菱形 然而 我想要创建的菱形不是由直线组成的 而是由四条
  • 如何读取 .docx 文件? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个 docx 文件 它包含许多我想要批量发送邮件的电子邮件地址 如何通过c 读取docx文件 最简单的方法可能是使用 Get 举
  • Delphi 编程中的枚举、常量、类常量

    我在 ClientDataSet 中有一个整数字段 我需要与一些值进行比较 如下所示 我可以使用常量 const mvValue1 1 mvValue2 2 if ClientDataSet Field AsInteger mvValue1
  • 为什么空行中的缩进不好?

    我知道的每个自由开源项目都有针对代码中尾随空格的规则 但我认为在下一行继续当前的缩进是很自然的 int main int a 42 return a 但 git 无论如何都会抛出警告 所以我的问题是 为什么这些选项卡inside目前的缩进不
  • GACUtil“程序集已成功添加到缓存”但“项目数 = 0”

    为什么 当我跑步时 gacutil i myAssembly dll 我得到 Assembly successfully added to the cache 但当我跑步时 gacutil l myAssembly dll I get Nu
  • Google 地图 KML:8 位十六进制代码

    我是 Google 地图和 KML 的新手 我的 KML 文件在地图上渲染多边形 但我想更改多边形上的填充颜色和多边形的线条颜色 问题是我无法以 8 位十六进制创建颜色 每当我认为我的颜色正确时 它的渲染效果就不像我想象的那样 我似乎无法在
  • 如何在 SQL 中取消透视? (SAP HANA)(列到行)

    我需要取消透视 SAP HANA 中的一些数据 我设置了一个示例表来尝试一下 但我仍然一无所获 实际的表包含 1000 个 ID 和大约 50 个列 但我想对许多表执行此操作 因此虽然我可以指定 FieldNames 原始列 但如果有一个自
  • Office.js 选择文本并将其替换为 ContentControl

    我使用 Office js 有以下用例 搜索一些文本body search 找到文本后 可以多次出现 迭代它们并将它们替换为具有不同内容的 ContentControl 搜索部分很简单 但我不确定第二部分 将 ContentControl
  • 在scala中将两个元组组合成一个新的更大元组的干净方法?

    假设我有以下元组 scala gt val t1 Tuple2 abcd efg t1 java lang String java lang String abcd efg scala gt val t2 Tuple2 1234 lmnop
  • ios - 资源文件大小超过 2GB 的企业应用程序

    我正在开发一个用于企业分发的 ipad 应用程序 仅由我公司人员使用 它有很多视频文件 图像 pdf等 制作应用程序后 ipa的大小约为2 2 GB 我想知道该应用程序是否可以在所有 iPad 上有效运行 或者这样做会很麻烦吗 期待一些不会
  • 无法在 keras 中的 BERT 之上添加 CRF 层以进行 NER

    我在训练 NER 的 BERT CRF 模型时遇到了一个未知问题 我使用 keras contrib 作为 CRF 模型 这是导入的库 pip install transformers pip install git https www g
  • Flutter:如何在不复制整个文件的情况下调整/覆盖 Flutter 核心代码的属性?

    这个问题与以下 StackOverflow 问题相关 底部工作表的初始高度为屏幕的一半 如果滚动 则高度会增加到全屏 https stackoverflow com questions 52028107 bottom sheet with
  • nodejs - 如何比较 bcrypt 的两个哈希密码

    您好 在我搜索解决方案后 我需要一些关于这个问题的帮助 但我还没有找到 我想将2个哈希密码与相同密码的bcrypt进行比较 我该怎么做 例如 我有这 2 个哈希密码 它们来自 bcrypt 中的相同密码 var password E Js
  • 有没有办法保证Java中的接口扩展类?

    假设我有以下情况 public abstract class Vehicle public void turnOn public interface Flier public void fly 有没有一种方法可以保证任何实现的类Flier还