java重写不起作用
子类“testC.java”中的方法不会覆盖超类“IMROBOS.java”中的方法 我也没有收到任何错误或警告,但它们没有按预期工作。 将显示超类方法的输出,而不是子类中方法的输出。如果我做错了什么,为什么没有收到错误消息? 在stackoverflow上有一个类似的问题,它提到将方法更改为“protected”是有效的,但在我的例子中没有 另外,请告诉我是否在testC.java中正确访问了变量“roboKey”? 谢谢 我的超类“IMROBOS.java” 我的子类“testC.java”:java重写不起作用,java,Java,子类“testC.java”中的方法不会覆盖超类“IMROBOS.java”中的方法 我也没有收到任何错误或警告,但它们没有按预期工作。 将显示超类方法的输出,而不是子类中方法的输出。如果我做错了什么,为什么没有收到错误消息? 在stackoverflow上有一个类似的问题,它提到将方法更改为“protected”是有效的,但在我的例子中没有 另外,请告诉我是否在testC.java中正确访问了变量“roboKey”? 谢谢 我的超类“IMROBOS.java” 我的子类“testC.java”
您仅在创建和使用super类的实例:
public static IMROBOS IMRobos = new IMROBOS();
...
jframe.addKeyListener( IMRobos );
这就是子类的roboAction
未被调用的原因
如果需要调用子类的方法,请创建子类的实例:
public static IMROBOS IMRobos = new testC ();
顺便说一句,请使用Java命名约定(类名应大写,变量和方法名应使用驼峰大小写)。您的代码将更具可读性
public static IMRobos iMRobos = new TestC ();
请参阅以下连结:
据说:
执行的方法的版本将由
用于调用它的对象。如果父类的对象是
用于调用该方法,则父类中的版本将
但如果子类的对象用于调用
方法,则将执行子类中的版本
对于名为IMRobos
的变量,您分配了一个super class
的对象,即IMRobos
,因此您得到了super class
的行为,但是如果您分配了sub class
的对象,即testC
,您将得到sub class
的行为
public static IMROBOS IMRobos = new testC ();
public static IMRobos iMRobos = new TestC ();