【问题标题】:Do Abstract classes need to implement an entire interface in java 7?抽象类是否需要在 java 7 中实现整个接口?
【发布时间】:2014-06-25 08:54:30
【问题描述】:

我需要一组不同的类来实现某个接口。然而,这些类中的很多,但不是全部,需要对接口中定义的某些方法进行相同的实现。我想知道我是否可以让一个抽象类实现接口并且只为这些类创建相同的方法?

比如我有接口A:

public interface A{ public returnType method1(){}; public returnType method2(){}; }

我可以这样做吗:

public abstract class AbstractPartialA implements A{
     @Override
     public returnType method1(){
         implementation
     }
}

然后让从这个抽象类扩展的类实现实现接口所需的其余方法?

【问题讨论】:

  • 你为什么不尝试实现它来验证自己? :)
  • 这基本上就是抽象类的重点了。
  • 抽象类是一些方法是抽象的类,即缺少实现。所以:是的。

标签: java class interface abstract


【解决方案1】:

是的,你可以,这正是抽象类的目的。

【讨论】:

    【解决方案2】:

    抽象类是否需要在 java 7 中实现整个接口?

    答案是“不”。抽象类可以实现整个接口,也可以只实现接口的部分方法。

    案例一

    如果它实现了整个接口并且仍然被声明为“抽象”,这意味着我们不希望其他人(将使用我们的类的人)为我们的类创建对象

    此类的示例是 javax.servlet.http 中的 HttpServlet。这里 HttpServlet 类没有任何抽象方法,但它仍然被声明为'abstract'

    案例 2

    很简单,如果类没有实现接口的任何一种方法,那么它就被声明为“抽象”。现在将由扩展抽象类的另一个类负责提供“抽象类”未实现的此类方法的实现

    【讨论】:

      【解决方案3】:

      您可以,当您尝试从 AbstractPartialA 扩展时,Java 会要求您:

      • 实现在已实现接口中声明但未实现的所有方法
      • 实现在超类中声明为抽象的所有方法

      请记住,一个类被认为实现了其超类实现的所有接口,而不仅仅是在此类声明中的 implements 关键字之后专门编写的那些接口。这适用于类的类型(及其引用的类型)和它需要实现的方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-11
        • 2012-01-20
        • 1970-01-01
        • 2014-08-18
        • 2020-10-20
        • 2010-11-09
        • 1970-01-01
        • 2014-02-05
        相关资源
        最近更新 更多