gpt4 book ai didi

java - 为什么实现方法不能有参数

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

为此:

import java.awt.EventQueue;
import javax.swing.JFrame;

public class SwingExample11 extends JFrame implements Runnable {
public SwingExample11() {
initUI();
}
private void initUI() {
setTitle("SwingExample1");
setSize(300, 200);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
@Override
public void run(SwingExample11 ex) {
ex.setVisible(true);
}
public static void main(String[] argv) {
SwingExample11 ex = new SwingExample11();
EventQueue.invokeLater(ex);
}
}

我得到:

6: error: SwingExample11 is not abstract and does not override abstract method run() in Runnable
public class SwingExample11 extends JFrame implements Runnable {
^
16: error: method does not override or implement a method from a supertype
@Override
^

当我从 run() 中删除参数和代码块时,它会编译,但显然不会执行任何操作。

当我实现一个接口(interface)时,我认为我可以编写我想要的方法?是因为它是一个抽象方法吗?我认为默认情况下所有接口(interface)方法都是抽象的,无论如何,我认为如果您 @Override 一个方法,那么您可以用它做您想做的事情。

我认为我对抽象方法感到困惑。请问我哪里错了,什么能让我更清楚地理解事情?

最佳答案

在java中方法签名由方法名及其参数类型组成。这是方法重载的基础知识(相同的方法名称,但不同的参数类型)。

run(void) 与 run(SwingExample11) 不同。

这是因为在运行时 JVM 将查找名为 run 且不带参数的方法。由于您只定义了一个名称为“run”的方法,并采用一个类型为“SwingExample11”的参数,因此不存在名称为“run”的方法不采用任何参数。

关于java - 为什么实现方法不能有参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33597700/

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