子类或实现接口

时间:2012-10-24 09:55:35

标签: java oop

所以,让我说我正在尝试完成一项需要某种形式抽象的任务。

这项任务可以通过子类化或实现接口来完成。

有没有理由倾向于他们中的任何一个?

明智的效率还是明智的呢?

示例

子类

public abstract class Main {

    public abstract void doSomething();

}
public class SubMain extends Main {

    public static void main(String[] args) {
        new SubMain().doSomething();

    }

    @Override
    public void doSomething() {
        System.out.println("Example Method.");

    }

}

实施界面

public interface TestInterface {
    public abstract void doSomething();

}
public class MainWithInterface implements TestInterface {

    public static void main(String[] args) {
        new MainWithInterface().doSomething();

    }

    @Override
    public void doSomething() {
        System.out.println("Example Method.");

    }
}

3 个答案:

答案 0 :(得分:4)

如果界面适合你,那么就倾向于它。它为这种API的客户端提供了更多的自由,因为他可以使用同一个类实现多个接口。

这里没有要考虑的性能方面。对于几乎任何用例,方法调度都可以被认为是免费的。

答案 1 :(得分:0)

您只有方法,因此界面更合适。如果您只关心行为,请使用界面。

答案 2 :(得分:0)

如果我想要继承行为,我倾向于倾向于接口,如果我想要继承结构,我倾向于子类化。如果有疑问,在这两者之间,我可能会考虑接口,因为它们允许多接口继承