2012-10-24 59 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

如果我想要繼承的行爲,我傾向於接口,如果我想要繼承的結構,我傾向於繼承接口。如果有疑問,在這兩者之間,我可能會考慮接口,因爲它們允許多接口繼承