在java中扩展多个类

时间:2014-07-15 07:02:44

标签: java

我的java代码中有一个扩展SwingWorker<Void,Void>类的类,现在我只想扩展mouseClicked()类的MouseAdapter方法,但我无法扩展MouseAdapter类因为我已经扩展了SwingWorker,有没有其他方法可以使用MouseAdapter类的mouseClicked()方法?因为如果我将实现MouseListener,那么我将需要覆盖MouseListener的所有方法,但我只需要mouseClicked。

2 个答案:

答案 0 :(得分:5)

提示:显示您的代码将有助于我们了解您的问题。

无论如何,从我读到的内容来看,你似乎打算做类似

的事情
public MyClass extends SwingWorker<Void, Void>, MouseAdapter {

您在Java中不能拥有多重继承,因此无法使用。

您有两种选择:

  • 制作MyClass 实施 MouseListener界面。由于它是一个接口,因此不会被视为多重继承。您必须为所有接口方法提供实现,尽管空实现就足够了。

  • 创建一个不同的类(可能是一个内部类)来实现鼠标监听器。它可能适合或不适合您的提议,因为您不清楚自己想做什么。

注意:一般情况下(不知道你的特殊需求),第二种方法通常会更明智,因为在多个类中定义逻辑更有可能实现“单一责任”原则(一个类做一件事,并且只有一个。)

答案 1 :(得分:4)

您似乎必须实现MouseListener的所有方法:

public class YourClass extends SwingWorker<Void,Void> implements MouseListener {
   ...
}

另一种选择是使用composition代替inheritance。只需在YourClass中创建扩展MouseAdapter的字段:

public class YourClass extends SwingWorker<Void, Void> {
    MouseAdapter mouseAdapter = new MouseAdapter() {
        public void mouseClicked(MouseEvent e) {
            // Your implementation here
        }
    };
    ...
}