2010-03-25 186 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(); 
}