gpt4 book ai didi

java 覆盖不起作用

转载 作者:行者123 更新时间:2023-11-30 07:21:19 26 4
gpt4 key购买 nike

子类“testC.java”中的方法不会覆盖父类(super class)“IMROBOS.java”中的方法我也没有收到任何错误或警告,但它们没有按预期工作。显示父类(super class)方法的输出,而不是子类方法的输出。如果我做错了什么,为什么我没有收到错误消息?stackoverflow 上有一个类似的问题,它提到将方法更改为“ protected ”有效,但在我的情况下无效。

另外,请告诉我是否在 testC.java 中正确访问了变量“roboKey​​”?谢谢

我的父类(super class)“IMROBOS.java”

import java.awt.event.*;
class IMROBOS extends KeyAdapter {
public int roboKey;
public char roboKeyChar;
@Override
public void keyPressed( KeyEvent event) {
roboKeyChar = event.getKeyChar();
roboKey = event.getKeyCode();
roboAction( roboKey );
}

protected void roboAction( int k ){
System.out.println( roboKey );
}

}

我的子类“testC.java”:

import java.awt.event.KeyEvent;
class testC extends IMROBOS {
public static IMROBOS IMRobos = new IMROBOS();
@Override
protected void roboAction( int k ){
System.out.println( " SubClass: " + IMRobos.roboKey + " | " + k + " | " + IMRobos.roboKeyChar );
}

public static void main( String[] a ){
JFrame jframe = new JFrame();
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jframe.addKeyListener( IMRobos );
jframe.setSize(400, 350);
jframe.setVisible(true);
}
}

最佳答案

您只是创建和使用父类(super class)的实例:

public static IMROBOS IMRobos = new IMROBOS();
...
jframe.addKeyListener( IMRobos );

这就是子类的 roboAction 未被调用的原因。

如果需要调用子类的方法,请创建子类的实例:

public static IMROBOS IMRobos = new testC ();

顺便说一句,请使用 Java 命名约定(类名应大写,变量和方法名应使用驼峰式大小写)。您的代码将更具可读性。

public static IMRobos iMRobos = new TestC ();

关于java 覆盖不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37521413/

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