考虑我的以下示例结构:
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 MyInterface
和MyInterface2
但这样做更好吗?
public class MyImpl extends MyAbstract
implements MyInterface, MyInterface2
{
}
vs
public class MyImpl extends MyAbstract
{
}
答案 0 :(得分:1)
您应该选择第二个版本
public class MyImpl extends MyAbstract
{
}
您正在扩展实现接口的类,这足以推断您的具体类也实现了这些接口,因为契约是可传递的。将接口添加到您的实现只是重复。
答案 1 :(得分:0)
扩展任何类允许我们在需要时覆盖超类的方法,但是当我们实现接口时,我们必须强制定义接口的所有方法。
答案 2 :(得分:0)
你的第二个版本就足够了,因为当你的类从第一个类继承时,你可以重用第一个类的所有属性(字段,方法,继承和实现接口......)。
您可以在此处找到更多信息:Inheritance