java - Child class method not overriding the method of the same signature in parent -
why child class method not overriding method of same signature in parent class?
summary:
i have class playerpaddle
extends abstract class paddle
, extends abstract class actor (the context here pong game). paddle
, playerpaddle
both have method same signature:
public void movedown()
the intention have playerpaddle
movedown
method override of paddle
. problem here when call this.movedown()
inside playerpaddle
, movedown
method of paddle
called.
the details:
breakpoints set on movedown()
in paddle
tripped, while breakpoints on movedown()
in playerpaddle
never trip. tried @override
on playerpaddle
movedown
method, still calls paddle
movedown
method.
the context:
the goal playerpaddle
objects move up/down @ different speed other paddle
objects. same problem occurs moveup
method well.
code below:
abstract public class actor { public void releasedevent(keyevent e) { } } abstract public class paddle extends actor { public void movedown() { // method called body.setvel(0, game.dx / 10.); } } public class playerpaddle extends paddle { @override public void movedown() { // method never gets called body.setvel(0, game.dx ); } public void receiveevent(keyevent e) { if (e.getkeycode() == keyevent.vk_up) { this.moveup(); } else if (e.getkeycode() == keyevent.vk_down) { this.movedown(); // want call movedown() inside playerpaddle } } }
i happy provide clarification.
see simple case, works:
public class test{ public static void main(string args[]) { new playerpaddle().receiveevent(); } } abstract class actor { public void releasedevent(keyevent e) { } } abstract class paddle extends actor { public void movedown() { // method called system.out.println("paddle"); } } class playerpaddle extends paddle { @override public void movedown() { // method never gets called system.out.println("playerpaddle"); } public void receiveevent() { this.movedown(); // want call movedown() inside playerpaddle } }
it calls playerpaddle one.
Comments
Post a Comment