java 覆盖不起作用

标签 java

子类“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/

相关文章:

java - Elasticsearch java api 或过滤器

java - CheckStyle EmptyBlock 规则不起作用

java - Java如何识别一个位置是否持有原始或引用

java - 为什么仅通过移位转换两个字节是不一致的?

java - 为什么在 Java 中将 String 解析为 Date 很慢?我们可以加速吗?

java - 将日历转换为具有特定格式的 XMLGregorianCalendar

java - 如何在 Java 中向 JFrame 添加文本

java - JMockit - 模拟 System.getProperties() 时为 "Missing invocation to mocked type"

java - javac命令的简单说明

java - Spring:如何多次重用相同的配置