2010-03-25 166 views
0

我注意到這個(它是一個java.awt.event類)。抽象類MouseAdapter與接口

public abstract class MouseAdapter implements MouseListener, 
               MouseWheelListener, 
               MouseMotionListener { 
.... 
} 

那麼你顯然被迫從該適配器

public class MouseAdapterImpl extends MouseAdapter {} 

類是抽象的和未實現的方法擴展。這是一種將不同接口組合成一個「基本接口」的策略嗎?我假設在java中不可能將不同的接口組合成一個接口而不使用這種方法。

換句話說,它不可能做這樣的事情在Java

public interface MouseAdapterIface extends MouseListener, 
              MouseWheelListener, 
              MouseMotionListener { 
} 

,然後最終

public class MouseAdapterImpl implements MouseAdapterIface {} 

是我點的理解是否正確?那麼C#呢?

回答

3

換句話說,它不可能做這樣的事情在Java

public interface MouseAdapterIface extends MouseListener, 
              MouseWheelListener, 
              MouseMotionListener { 
} 

當然,你可以做到這一點在Java中。

的原因有一個抽象類,它也提供了對所有方法的默認實現(這什麼都不做),這樣你只需要執行那些你感興趣的內容。

的是一個抽象類並且沒有實施方法

不正確。它是抽象的,但它實現了三個接口中的所有方法。

+0

哦不對,我沒有看到,這些方法並沒有聲明爲abstract不允許的。 – 2010-03-25 08:38:09

0

在Dotnet中,您可以從n個其他接口繼承您的接口,但不能從任何抽象類繼承。 如果MouseListener,MouseWheelListener,MouseMotionListener是接口,則dotnet允許 從它繼承。

這不是在DOTNET的

 

public abstract class AbstractA 
{ 
    public abstract void A(); 
} 

public interface IA:AbstractA 
{ 
    void A(); 
}