簡體   English   中英

抽象類中聲明的Java實現接口

[英]Java Implementing Interface Declared in Abstract Class

考慮我的以下示例結構:

public interface MyInterface 
{
    public void doSomething();
}

public interface MyInterface2 
{
    public void doSomethingElse();
}

public class MyAbstract implements MyInterface, MyInterface2
{
    @Override
    public void doSomething()
    {
        //...
    }

    @Override
    public void doSomethingElse()
    {
        //...
    }
}

所以我有 2 個抽象類實現的接口。

如果我有一個 AbstractClass MyImpl的實現,它擴展了MyAbstract ,似乎我不必聲明implements MyInterfaceMyInterface2

但這樣做是更好的做法嗎?

public class MyImpl extends MyAbstract
    implements MyInterface, MyInterface2
{

}

對比

public class MyImpl extends MyAbstract
{

}

你應該選擇第二個版本

public class MyImpl extends MyAbstract
{

}

您正在擴展實現接口的類這一事實足以推斷您的具體類也實現了這些接口,因為契約是可傳遞的。 將接口添加到您的實現中只是重復。

擴展任何類都允許我們在需要時覆蓋超類的方法,但是當我們實現一個接口時,我們必須強制定義該接口的所有方法。

您的第二個版本就足夠了,因為當您的類從第一個類繼承時,您可以重用第一個類的所有屬性(字段、方法、繼承和實現接口...)。

您可以在此處找到更多信息: 繼承

暫無
暫無

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

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