当前位置: 首页 > 知识库问答 >
问题:

如何在Java中处理两个抽象类的需求?[副本]

李华茂
2023-03-14

Java不允许多个超类;和接口不能有方法体,正如我所知。那么如何处理我想继承两个不同超类的实现方法的情况。

假设我为可以执行某些特定任务的对象创建类,假设对象可以演奏和唱歌。有些对象只是play及其子类,所以不需要为每个子类定义完全相同的play()方法,我在超类player中定义了它。有些对象只会唱歌,所以,我在超类Singer中定义泛型sing()方法,而不是在每个子类中定义。如果一个子类可以唱歌和播放,那么需要扩展Player和Singer超类,以便能够应用实现的超类的play()和sing()方法。如何以最有效的方式处理这种情况?

共有1个答案

路奇
2023-03-14

从Java8开始,接口可以有默认方法。这些方法用default关键字标记,并且可以在接口中有一个实现,然后可以在实现接口的类中使用(或由实现接口的类重新实现)。类还可以实现多个接口,因此可以让一个类实现playersinger,并在它们各自的接口中提供默认方法play()sing()。如果您想修改一个接口,而不必同时修改已经实现它的类,这也很有用。

 类似资料:
  • 我通过学校为一项任务提供的简报创建了一个飞机座位预订系统。我遇到了一个我无法解决的主要问题。 摘要说明抽象类必须有一个抽象方法和大约4个公共方法。在抽象类的两个子类中,我们都必须初始化对象数组(所有普通的座位)。然而,一旦它们被初始化,我不知道如何将它们发送回抽象类(该类有一个检查未预订的飞机座位的方法,这就是我需要初始化的座位对象的地方) ArrayIndexOutOfBounds在一个应该在边

  • 问题内容: 我想在自己的类中调用抽象类的方法。抽象类是: 我想调用上面的方法,并且调用的类是: 每当我尝试运行上述类时,它都会在line上引发NullPointerException 。谁能告诉我如何解决这个问题? 问题答案: 首先,一个抽象类,因此您不能直接实例化它。您必须创建一个子类,比如说它覆盖Call中的任何抽象方法。 获得一个意味着您作为参数传入的任何内容都尚未初始化。因此,在创建Cal

  • 无效: 有效: (运输是抽象的) 顺便说一句,我的所有jaxb类都在同一个包中,并且我的JaxbContext是针对这个包配置的。

  • 问题内容: 在以下代码中,我创建了一个基本抽象类。我希望所有继承自其的类都提供该属性,因此我将该属性设置为。 然后,我创建了一个名为的子类,该子类旨在提供一些功能,但仍保持抽象。中没有属性,但是python实例化了该类的对象而没有错误。一个人如何创建抽象属性? 问题答案: 从Python 3.3 开始,修复了一个错误,这意味着装饰器现在应用于抽象方法时,可以正确地标识为抽象。 注:订单的问题,你必

  • 但我得到了NullPointerException任何人都可以帮忙

  • 问题内容: 我是第一次使用JUnit进行Java测试。我必须使用Java,并且想使用单元测试。 我的问题是:我有一个带有一些抽象方法的抽象类。但是有些方法不是抽象的。如何使用JUnit测试此类?示例代码(非常简单): 我要测试并运行。 在“JUnit常见问题解答”部分中,我找到了此链接,但我不理解作者想在此示例中说些什么。这行代码是什么意思? 问题答案: 如果您没有该类的具体实现,并且方法不是测试