我需要一组不同的类来实现某个接口。但是,很多这些类,但不是所有类,都需要为接口中定义的某些方法实现相同的实现。我想知道我是否可以创建一个抽象类来实现接口,并且只为这些类创建相同的方法?
例如,我有界面A:
public interface A{
public returnType method1(){};
public returnType method2(){};
}
我可以这样做:
public abstract class AbstractPartialA implements A{
@Override
public returnType method1(){
implementation
}
}
并且从这个Abstract类扩展的类实现了实现接口所需的其余方法吗?
答案 0 :(得分:4)
是的,你可以,这就是抽象类的确切目的。
答案 1 :(得分:1)
抽象类需要在java 7中实现整个接口吗?
答案是"不,#34;。抽象类可以实现整个接口,也可以只实现接口的某些方法。
如果它实现了整个界面并仍被声明为“抽象”,则意味着我们不希望其他人(将要使用我们的类的人)为我们的类创建对象
此类的示例是javax.servlet.http中的HttpServlet。这里HttpServlet类没有任何抽象方法,但仍被声明为' abstract'
很简单,如果类没有实现任何一个接口方法,那么它被声明为' abstract'。现在,扩展抽象类的另一个类的责任是提供这种方法的实现,而这个方法并没有被抽象类'
答案 2 :(得分:0)
您可以,当您尝试从AbstractPartialA
扩展时,Java会要求您:
请记住,一个类被认为是实现其超类实现的所有接口,而不仅仅是在此类声明中implements
关键字之后专门编写的接口。这适用于类的类型(以及它的引用类型)以及它需要实现的方法。