【问题标题】:How to handle the need of two abstract classes, in Java? [duplicate]如何在 Java 中处理两个抽象类的需求? [复制]
【发布时间】:2021-03-20 02:49:01
【问题描述】:

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

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

【问题讨论】:

  • 自 Java 8 以来接口可以有方法体(默认方法)。

标签: java inheritance interface polymorphism extend


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 2015-07-11
    • 2021-10-21
    相关资源
    最近更新 更多