由于Java中的一个类不能扩展多个类。我怎样才能度过这个难关呢? [关闭]

2023-12-11

我有两个班级需要延长一个班级。我收到编译器错误,因为这在 Java 中不会发生。我知道您可以在 Java 中实现任意数量的接口,但只能扩展另一个类。我该如何解决这个问题?


使用“has A”关系而不是“is An”。

class A
class B

你(认为)你想要:

class C extends A, B

相反,请执行以下操作:

class C {
  A theA;
  B theB;
}

多重继承几乎总是被滥用。仅将扩展类作为导入其数据和方法的简单方法是不合适的。如果你扩展一个类,它应该真正是一个“is An”关系。

例如,假设你有课,

class Bank extends Financial
class Calculator

如果您想使用以下功能,您可以这样做Calculator in Bank,

class Bank extends Calculator, Financial

然而,一个Bank绝对不是Calculator。一个银行uses a Calculator,但它本身并不是一个。当然,在java中,无论如何你都不能这样做,但是在其他语言中你可以这样做。

如果您不购买其中任何一个,并且如果您真的想要以下功能Calculator成为其中的一部分Bank的接口,您可以通过 Java 接口来做到这一点。

interface CalculatorIntf {
  int add(int a, int b);
}

class Calculator implements CalculatorInf {
  int add(int a, int b) { return a + b };
}

class Bank extends Financial implements CalculatorIntf
  Calculator c = new Calculator();

  @Override // Method from Calculator interface
  int add(int a, int b) { c.add(a, b); }
}

一个类可以实现任意多个接口。请注意,这在技术上仍然是“有 A”关系

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

由于Java中的一个类不能扩展多个类。我怎样才能度过这个难关呢? [关闭] 的相关文章

  • 具体实现是否应该提供其实现的接口中不存在的任何公共 API?

    接口代码 被认为是很好的实践 这样的代码很容易进行单元测试并实现松散耦合 用户只知道接口 并且连接具体对象的责任位于最顶层 这可以在某些初始化代码中或在帮助下完成 框架 我的问题是关于遵循以下做法代码到接口 这是否意味着具体类永远不能声明其
  • 如何将 .cer 证书导入 java 密钥库?

    在开发 Java Web 服务客户端期间 我遇到了一个问题 Web 服务的身份验证使用客户端证书 用户名和密码 我从网络服务背后的公司收到的客户端证书位于 cer格式 当我使用文本编辑器检查该文件时 它具有以下内容 BEGIN CERTIF
  • 不同的 JDK 更新会产生不同的 Java 字节码吗?

    假设场景 我有一个项目 其源合规性级别指定为 1 5 现在 我使用两种不同的 JDK 编译此项目 首先使用 JDK 6 Update 7 然后使用 JDK 6 Update 20 这两个不同的 JDK 是否会生成不同的 Java 字节代码
  • 按下按钮时清除编辑文本焦点并隐藏键盘

    我正在制作一个带有编辑文本和按钮的应用程序 当我在 edittext 中输入内容然后单击按钮时 我希望键盘和焦点在 edittext 上消失 但我似乎无法做到这一点 我在 XML 中插入了这两行代码 android focusable tr
  • Java,将 null 分配给对象和仅声明之间有什么区别

    之间有什么区别 Object o null and Object o 仅声明 有人可以回答我吗 这取决于您声明变量的范围 例如 局部变量没有default values在这种情况下你将不得不分配null手动 在这种情况下实例变量分配 nul
  • 警告:跳过条目,因为它不是绝对 URI。 NetBeans 中的 GlassFish

    我成功安装了 GlassFish 但是 当我启动服务器时 我收到两条警告消息 警告 跳过条目 因为它不是绝对 URI 那是关于什么的 Launching GlassFish on Felix platform Aug 09 2014 10
  • 我们如何测试我们的 Java UI?

    我们正在寻找记录和回放类型的测试工具来自动化我们的一些 UI 功能测试 我们已经研究了从 Silke 到 QTP 的大多数常见嫌疑 但没有一个起作用 当需要右键单击才能从右键单击菜单中选择某些内容时 或者当您必须在网格的下拉列表中选择一个值
  • 我需要显式关闭连接吗?

    我持有一个实例MongoClient and DB在我的应用程序中 每次我想执行某些操作时 我都会调用getCollection 我想知道是否需要显式关闭连接 就像connection close 在 JDBC 中 强调一下 我只有一个Mo
  • 根据哈希值确认文件内容

    我需要 检查完整性 content文件数量 文件将写入 CD DVD 可能会被复制多次 这个想法是识别正确复制的副本 在从 Nero 等中删除它们之后 我对此很陌生 但快速搜索表明Arrays hashCode byte http down
  • 将 EditText 聚焦在设备上运行的 PopupWindow 中时出现异常

    我正在为 Android 开发一个弹出窗口 它正在工作 我在上面添加了一个 EditText 和一个按钮 当在 ADV 上运行时 它可以正常工作 而在设备上运行时 当我专注于 EditText 时 这会抛出一个奇怪的异常 android v
  • java.lang.UnsupportedOperationException:无法解析索引 13 处的属性:TypedValue{t=0x2/d=0x7f010046 a=-1}

    我在 android attrs xml 文件中添加了一个用于不同色调的属性 在 styles xml 文件中 我为这些属性指定了颜色 因此每种样式的它们都不同 Attrs xml
  • java.lang.IllegalArgumentException:addChild:子名称“/”不唯一

    java lang IllegalArgumentException addChild 子名称 不唯一 通过在 tomcat webapps 文件夹中启用和禁用 saml 单点登录来替换现有 war 文件时遇到此问题 我正在使用 apach
  • 在 Java 中使用 Inflater 解压缩 gzip 数据

    我正在尝试使用以下方法解压缩 gzip 数据Inflater 根据文档 如果参数 nowrap 为 true 则 ZLIB 标头和校验和 字段将不会被使用 这提供了与 GZIP 和 PKZIP 使用的压缩格式 注意 使用 nowrap 选项
  • 使用 Java 通过 HTTP 下载未知长度的文件

    我想用java下载一个HTTP查询 但是我下载的文件在下载时有一个未确定的长度 我认为这将是相当标准的 所以我搜索并找到了它的代码片段 http snipplr com view 33805 http snipplr com view 33
  • 在Spring-Boot中,我们如何在同一个项目中连接两个数据库(Mysql数据库和MongoDB)?

    我正在尝试创建一个 Spring Boot 项目 其中我有一个要求 我想连接到不同的数据库 MySql 和 MongoDB 我是否需要做一些特殊的事情来连接到这两个数据库 或者 spring boot 会自动计算出自己连接到这两个数据库 我
  • Storm Spout 未收到 Ack

    我已经开始使用storm 所以我使用创建简单的拓扑本教程 https github com nathanmarz storm wiki Tutorial 当我运行我的拓扑时LocalCluster一切看起来都很好 我的问题是我没有得到元组的
  • 使用链接列表插入优先级队列的方法

    首先 我觉得我应该提到这是一项作业 我并不是在寻找直接的代码答案 只是为了指出正确的方向 我们被要求在链表中实现优先级队列 我正在努力编写 insert 函数的第一部分 在代码中我尝试检查是否head包含任何内容 如果没有则设置为head
  • 如何告诉 IntelliJ 使用 Java 1.6 JDK 启动 gradle?

    一个简单的问题 即使经过几个小时的尝试和搜索 我也无法弄清楚 我安装了 Java 6 和 7 如何告诉 IntelliJ 使用 JDK 版本 1 6 启动 Gradle 构建 无论我做什么 IntelliJ 都会以以下方式开始我的 grad
  • 升级到 Tomcat 8 时出现 ClassNotFoundException

    我最近将 NetBeans IDE 从 v7 3 升级到 v8 突然我的应用程序在连接到数据库时在服务器启动时抛出异常 这两个版本的 IDE 之间的唯一区别是后者使用 Tomcat 8 异常日志 javax naming NamingExc
  • Java,如何管理线程读取socket(websocket)?

    我有一个 WebSocket 服务器 我的服务器创建一个新线程来处理新连接 该线程一直处于活动状态 直到 websocket 中断 我的问题 对于 1 000 000 个连接 我需要 1 000 000 个线程 我如何通过一个线程处理多个

随机推荐

  • Volley - NetworkImageView 有时不显示错误图像?

    所以我决定尝试一下新的排球库如上所示谷歌IO 2013 我在使用简单的解决方案时尝试过NetworkImageView在一个上显示多个图像GridView 它运行良好并显示图像 但如果我让它下载图像 然后在下载过程中关闭 WiFi 它不会显
  • Visual Studio 2010 Professional Beta 2 上的 Windows Mobile 6 Standard SDK 刷新安装问题

    当我安装Windows Mobile 6 标准 SDK 更新我收到错误 未安装 Visual Studio 2005 SP1 或更高版本 我安装了 Visual Studio 2010 Professional Beta 2 请你告诉我如何
  • 使用 props 以纯文本或数组访问对象路径

    考虑以下对象和存储在对象内的值的路径 var obj a 1 b a x 2 b 3 c 4 var path b a x 获取对象路径中的内容的最佳方法 最佳性能 是什么 使用 eval path obj concat path var
  • vba中dim和set有什么区别

    请原谅我 我是 VBA 新手 有时我用 Dim r as Range r Range A1 其他时候我用 Set r Range A1 有什么不同 我什么时候应该使用什么 没有理由使用set除非引用对象引用 最好只在这种情况下使用它 对于所
  • 画布上的 Android Center 文本

    我正在尝试使用下面的代码显示文本 问题是文本没有水平居中 当我设置坐标时drawText 它将文本的底部设置在此位置 我希望绘制文本 以便文本也水平居中 这是进一步显示我的问题的图片 Override protected void onDr
  • Toast 类型中的方法 makeText 不适用于参数

    我正在使用 ViewPagerIndicator 并尝试使用 Toast 在滚动到下一个片段页面时显示 我收到以下错误 The method makeText Context CharSequence int in the type Toa
  • C# 获取文件更改事件

    我确实有一个程序可以在文本文件中记录一些特定事件 它使文件保持打开状态 现在我想编写第二个应用程序 在表单上显示这些日志 我可以为另一个进程打开的文本文件中的任何更改设置事件吗 或者我必须定期阅读 thanks 看看文件系统观察者类
  • 选择对不同数据库服务器上的 2 个表进行查询

    我试图通过在经典 ASP 中查询 2 个数据库 Sybase 来生成报告 我创建了 2 个连接字符串 数据库的 connA数据库 B 的 connB 两个数据库都存在于同一服务器上 不知道这是否重要 Queries q1 SELECT co
  • 如何读写Excel文件

    我想从 Java 读取和写入一个 3 列 N 行的 Excel 文件 在每个单元格中打印一个字符串 谁能给我简单的代码片段 我是否需要使用任何外部库或者 Java 是否有内置支持 我想做以下事情 for i 0 i
  • 尝试从谷歌搜索编辑框获取并打印数据,但出现 InvalidElementStateException

    我试图在谷歌搜索编辑框中写一个单词并捕获所有相关的列表项并显示它 但在这样做时我遇到了例外 org openqa selenium InvalidElementStateException 元素已禁用 因此不能用于操作 我经历了相同的异常相
  • 如何从另一个组件调用一个组件方法?

    我有一个包含按钮的标题组件 我希望该按钮在单击时显示另一个组件 模式页面 我可以做这样的事情吗 这是我的标题组件 import ComponentToDisplay from components ComponentToDisplay in
  • DirectShow 过滤器未显示为输入捕获设备

    从捕获源过滤器的优秀示例开始here我编写了自己的输入捕获设备 该设备在 Graph Studio Next 中运行良好 但在 Skype 或类似应用程序中并未显示为捕获设备 即网络摄像头 因为我想了解发生了什么 所以我请您帮助我找出那些应
  • 如何使用nodejs读取.pdf文件的内容?

    我有一个自动化 PDF 内容的方案 如何在nodejs中检索PDF文件的内容 我对此完全被封锁了 虽然帖子很少pdf2jsona and jsonreader但那些对我不起作用 任何帮助将不胜感激 var pdfParser new PDF
  • 是或否:服务器能否发送 HTTP 响应,同时仍从相关 HTTP 请求上传文件?

    如果网站用户使用以下方式提交 HTML 表单 1 post 方法 2 多部分 表单数据编码类型 3 附件很大 服务器是否可以上传发布的文件 并在文件上传完成之前发送服务器生成的 HTTP 响应 而不使用 AJAX 这是相当密集的 因此 我写
  • 如何在 C# 中使用 SqlDataReader 获取行数

    我的问题是如何使用查询返回的行数SqlDataReader在 C 中 我已经看到了一些关于此问题的答案 但没有一个明确定义 除了一个声明执行 while 循环的答案Read 方法并增加一个计数器 我的问题是 我试图填充一个多维数组 第一行是
  • “setenforce 0”如何以及为何允许 Java 7 运行? [关闭]

    Closed 这个问题是无关 目前不接受答案 我对我正在开发的程序进行了一些更改 并将 Java 从 Java 6 更新到了 Java 7 我在 CentOS 5 8 32 位虚拟机上运行该程序 在 Java 更新之前 它运行良好 现在该过
  • API:Spotify上基于推文的音乐推荐,需要word2vec还是doc2vec?

    我想设计一个推荐系统 根据使用主题标签 nowplaying 的推文推荐用户歌曲 最初 我想权衡他们的推文并逐字分析 看看他们是否在推文中发布了有关某些歌曲的任何内容 但这似乎需要我更多的时间 由于我不会分析每条推文 而只是查找包含主题标签
  • 401 通过 Ajax 对 Laravel 中的 RESTful API 进行未经授权的 DELETE 请求

    我使用创建了一个宁静的 APIlaravel控制器 我有一个PhotosController其中有一个destroy id 资源删除方法 我也有一块javascript发送的代码DELETE向我的应用程序请求 结果应该是删除照片 idID
  • Qt:无法从 javascript 调用共享对象方法/属性

    我已经尝试了与 Vicky Chijwani 对于这个问题的答案完全相同的方法QT QWebEnginePage setWebChannel 传输对象一切都很好 但我无法调用 jshelper 的任何方法或属性 请看我的代码myclass
  • 由于Java中的一个类不能扩展多个类。我怎样才能度过这个难关呢? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我有两个班级需要延长一个班级 我收到编译器错误 因为这在 Java 中不会发生