抽象类中声明的Java实现接口

时间:2014-10-30 13:42:16

标签: java class interface

考虑我的以下示例结构:

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的AbstractClass MyAbstract的实现,似乎我不必声明implements MyInterfaceMyInterface2

但这样做更好吗?

public class MyImpl extends MyAbstract
    implements MyInterface, MyInterface2
{

}

vs

public class MyImpl extends MyAbstract
{

}

3 个答案:

答案 0 :(得分:1)

您应该选择第二个版本

public class MyImpl extends MyAbstract
{

}

您正在扩展实现接口的类,这足以推断您的具体类也实现了这些接口,因为契约是可传递的。将接口添加到您的实现只是重复。

答案 1 :(得分:0)

扩展任何类允许我们在需要时覆盖超类的方法,但是当我们实现接口时,我们必须强制定义接口的所有方法。

答案 2 :(得分:0)

你的第二个版本就足够了,因为当你的类从第一个类继承时,你可以重用第一个类的所有属性(字段,方法,继承和实现接口......)。

您可以在此处找到更多信息:Inheritance