gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 17:00:01 25 4
gpt4 key购买 nike

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

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com