java - 无法重写父类(super class)的方法

标签 java swing

执行此操作时,我收到此错误:

The return type is incompatible with MouseAdapter.mouseClicked(MouseEvent)

类(class):

public class MyMouseAdapter extends MouseAdapter
{
    public MyMouseAdapter()
    {
        // TODO Auto-generated constructor stub
    }

    @Override
    public String mouseClicked(MouseEvent e)
    {
        // TODO Auto-generated method stub

    }
}

哪里错了?原始方法是 public void mouseClicked(MouseEvent e)

最佳答案

当重写一个方法时,必须以子类绝对代表其父类的方式完成。在这种情况下,您将重写 mouseClicked(MouseEvent e),它不允许返回任何内容;这是一个 void 方法。因此,首先,要解决这个问题,您需要将实现更改为:

public void mouseClicked(MouseEvent e) {
     /** Do stuff. **/
}

不允许更改方法的返回类型的原因是,当对父类进行子类化时,您是说子类可以以与父类完全相同的方式进行交互。因此,如果您有一个全部继承自同一个父对象的对象数组,则可以以这种通用方式处理它们;您知道,当调用它们的 mouseClick 方法时,它们都不会返回任何数据。

假设来说,如果单击鼠标时此类的某些实现返回一个 String,而另一些则没有,那么与这些子类的数组的通用交互如何能够告诉不同之处?这就是面向对象编程的力量发挥作用的地方;您可以以通用方式与MouseAdapter实例进行交互,并允许它们以自己的类特定方式重写此方法。

您可以通过向类添加一些方法来解决此问题,这些方法可以从 mouseClicked(MouseEvent e) 方法调用,这将允许您处理您的 String数据。这将确保在处理通用输入事件后以特定方式与子类进行交互。

关于java - 无法重写父类(super class)的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28400275/

相关文章:

java - 如何使用 JMenu 项在 JTextArea 中的单独行上显示整数?

java - 覆盖 Swing 类的 toString()

java - Google AppEngine - Java - Slim3 - 在新 View 中显示对象(从 key 检索)属性

java - 无法运行 solr(无法打开日志文件)

Java Swing,制作网格布局填充父级?

java - 多个线程访问同一个文件

java - 如何访问受@RolesAllowed 保护的 Jersey 资源

java - 在java中使用primefaces显示Blob图像

java - JAVA中从txt文件到二维双数组

MenuItem/MenuBar 和声音播放器的 Java 退出按钮