Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中扩展多个类_Java - Fatal编程技术网

在java中扩展多个类

在java中扩展多个类,java,Java,我的java代码中有一个扩展SwingWorker类的类,现在我只想扩展MouseAdapter类的mouseClicked方法,但我不能扩展MouseAdapter类,因为我已经扩展了SwingWorker,还有其他方法可以使用MouseAdapter类的mouseClicked方法吗?因为如果我要实现MouseListener,那么我需要覆盖MouseListener的所有方法,但我只需要mouseClicked。似乎您必须实现MouseListener的所有方法: public class

我的java代码中有一个扩展SwingWorker类的类,现在我只想扩展MouseAdapter类的mouseClicked方法,但我不能扩展MouseAdapter类,因为我已经扩展了SwingWorker,还有其他方法可以使用MouseAdapter类的mouseClicked方法吗?因为如果我要实现MouseListener,那么我需要覆盖MouseListener的所有方法,但我只需要mouseClicked。

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

public class YourClass extends SwingWorker<Void,Void> implements MouseListener {
   ...
}
另一种选择是使用而不是。只需在类中创建扩展MouseAdapter的字段:

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

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

不管怎样,从我读到的来看,你似乎打算这样做

public MyClass extends SwingWorker<Void, Void>, MouseAdapter {
在Java中不能有多重继承,所以这是行不通的

您有两个选择:

使MyClass实现MouseListener接口。因为它是一个接口,所以不会将其视为多重继承。您必须为所有接口方法提供一个实现,尽管空的实现就足够了

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


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

闻起来像是糟糕的设计。重新检查设计。使用接口和聚合。否则,虽然不建议您使用多级继承。但我只需要鼠标单击meyhod@Shafu:那么你就可以用作文了。请参阅我对该答案的编辑。