2012-10-24 61 views
0

所以,假设我正在尝试完成需要某种形式抽象的任务。要子类或实现接口

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

有没有任何理由倾向于它们之一?

效率明智或公约明智呢?

一个例子

子类

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."); 

    } 
} 

回答

4

如果接口会为你工作,那么瘦朝它。它给这种API的客户端提供了更多的自由,因为他可以在同一个类中实现多个接口。

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

0

你只有那里的方法,所以一个接口更合适。如果您只关心行为,请使用界面。

0

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