簡體   English   中英

抽象類是否需要在Java 7中實現整個接口?

[英]Do Abstract classes need to implement an entire interface in java 7?

我需要一組不同的類來實現某個接口。 但是,對於接口中定義的某些方法,很多(但不是全部)這些類需要相同的實現。 我想知道是否可以讓抽象類實現該接口,並僅創建與那些類相同的方法?

例如,我有接口A:

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

我可以這樣做嗎?

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

並且從這個Abstract類擴展的類是否實現了實現接口所需的其余方法?

是的,您可以,這就是抽象類的確切目的。

抽象類是否需要在Java 7中實現整個接口?

答案是“否”。 抽象類可以實現整個接口,也可以僅實現接口的某些方法。

情況1

如果它實現了整個接口並且仍然聲明​​為“抽象”,則意味着我們不希望其他人(將要使用我們的課程的人)為我們的課程創建對象

此類的示例是javax.servlet.http中的HttpServlet。 此處的HttpServlet類沒有任何抽象方法,但仍被聲明為“抽象”

案例2

很簡單,如果該類未實現接口的任何一種方法,則將其聲明為“抽象”。 現在將由另一個類負責擴展抽象類,以提供該方法的實現,而該方法不是“抽象類”實現的

您可以,當您嘗試從AbstractPartialA擴展時,Java會要求您:

  • 實現在已實現的接口中聲明但未實現的所有方法
  • 實現在超類中聲明為抽象的所有方法

請記住,一個類被視為實現了由其超類實現的所有接口,而不僅僅是在該類的聲明中的implements關鍵字之后專門編寫的接口。 這既適用於類的類型(因而適用於其引用的類型),也適用於需要實現的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM