在Interface和Abstract类中使用Same方法

问题描述 投票:1回答:1

我知道这个类型的问题已被多次回答,它可能被标记为重复

我有这样的结构

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不允许多重继承,我们使用接口来逃避它。但是有了这个结构,我找不到一个有关我需要扩展和实现的好处/商业案例?因为我在抽象类中有一个具体的方法。

java inheritance abstract-class extends implements
1个回答
1
投票

想想你有很多的情况,比方说10 w.l.g,AbstractService的扩展,其中大多数(如果不是全部)在方法sayHello中具有相同的行为。您需要在实现接口的每个类中实现此方法,并且最终会有大量重复代码。在Java 7或更早版本中,这种方法可以在这种情况下为您节省开支。

为什么我说Java 7或更早?好吧,从Java 8开始,接口具有default方法实现,您可以在其中实际提供方法的默认实现,您可以在需要时覆盖它。

© www.soinside.com 2019 - 2024. All rights reserved.