【问题标题】:Java instance abstract class, which implements interfaceJava实例抽象类,实现接口
【发布时间】:2024-01-01 15:05:01
【问题描述】:

我有两个方法和抽象类的接口,它们实现了这个接口并覆盖了它的一个方法。我可以实例化这个抽象类,而不覆盖其他接口方法吗?或者我可以用具有其他签名的方法替换此方法吗?

UPD:感谢您的回答,我的问题确实犯了错误。我可以使用将扩展我的抽象类的匿名类,而不覆盖来自实现 inrerface 的所有方法吗?我如何理解 DragonK 的回答,不,我需要创建类,它将扩展抽象类并覆盖其他方法?

【问题讨论】:

  • 嗯,你能提供一个你想要的例子吗?我不确定我是否跟随。而且不能直接实例化抽象类……

标签: java interface instance abstract-class overriding


【解决方案1】:

您不能实例化抽象类。 或者您可以有匿名实现并实例化抽象类。 在提供覆盖抽象方法的同时,我们可以更改“协变返回类型”,但您不能更改方法签名。

【讨论】:

    【解决方案2】:

    我可以实例化这个抽象类,而不覆盖其他方法吗? 界面?

    • 您不能实例化抽象类

    我可以用具有其他签名的方法替换此方法吗?

    • 您可以将此方法替换为具有其他签名的方法。但是类扩展您的抽象类将覆盖所有抽象方法。

    【讨论】:

      【解决方案3】:

      除非您正在处理 Java 8 的 Default Methods,否则您的接口将没有实现,因此没有方法可以覆盖。

      在Java中,抽象类也不能被实例化,除非你构造一个anonymous class

      【讨论】:

        【解决方案4】:

        我可以实例化这个抽象类吗

        您可以从不实例化抽象类。

        您可以实现接口的任何方法,但仍无法实例化抽象类。

        【讨论】: