我知道这个类型的问题已被多次回答,它可能被标记为重复
我有这样的结构
public interface service{
public void sayHello();
}
public abstract class AbstractService{
public void sayHello(){
System.out.println("Hello!!");
}
}
public class MyService extends AbstractService implements service{
public void sayHello(){
super.sayHello();
}
}
我知道java不允许多重继承,我们使用接口来逃避它。但是有了这个结构,我找不到一个有关我需要扩展和实现的好处/商业案例?因为我在抽象类中有一个具体的方法。
想想你有很多的情况,比方说10 w.l.g,AbstractService
的扩展,其中大多数(如果不是全部)在方法sayHello
中具有相同的行为。您需要在实现接口的每个类中实现此方法,并且最终会有大量重复代码。在Java 7或更早版本中,这种方法可以在这种情况下为您节省开支。
为什么我说Java 7或更早?好吧,从Java 8开始,接口具有default
方法实现,您可以在其中实际提供方法的默认实现,您可以在需要时覆盖它。