Community
Participate
Working Groups
Build Identifier: 20110615-0604 Pushing down a method within a method invocation using super changes the name binding of the method invocating to an overloaded method. Reproducible: Always Steps to Reproduce: 1. Create the classes: public class A { public int k(long l) { return 10; } } public class B extends A { public int k(int i) { return 20; } public int m() { return super.k(2); } } public class C extends B { public static void main(String[] args) { C c = new C(); System.out.println(c.m()); } } 2. This program prints 10. Apply a push down method on m(): public class A { public int k(long l) { return 10; } } public class B extends A { public int k(int i) { return 20; } } public class C extends B { public int m() { return super.k(2); } public static void main(String[] args) { C c = new C(); System.out.println(c.m()); } 3. The behavior of the program changes. Now, the program prints 20.
*** This bug has been marked as a duplicate of bug 292981 ***