抽象类MouseAdapter与接口

时间:2010-03-25 08:31:57

标签: c# java

我注意到了这一点(它是一个java.awt.event类)。

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#怎么样?

2 个答案:

答案 0 :(得分:3)

  

换句话说,在java

中不可能做到这样的事情
public interface MouseAdapterIface extends MouseListener, 
                                           MouseWheelListener, 
                                           MouseMotionListener {
}

当然,你可以用Java做到这一点。

拥有一个抽象类的原因是它还为所有方法提供了默认实现(什么都不做),所以你只需要实现你感兴趣的那些。

  

该类是抽象的,不实现任何方法

不正确。它是抽象的,但它确实实现了三个接口中的所有方法。

答案 1 :(得分:0)

在Dotnet中,您可以从其他接口继承您的接口,但不能从任何抽象类继承您的接口。 如果MouseListener,MouseWheelListener,MouseMotionListener是接口,那么dotnet允许 继承它。

DotNet

中不允许这样做

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

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