我注意到了这一点(它是一个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#怎么样?
答案 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();
}