From mboxrd@z Thu Jan 1 00:00:00 1970 From: bryce@albatross.co.nz To: java-gnats@sourceware.cygnus.com Subject: java/1262: Method with default access can be overridden in another package Date: Wed, 20 Dec 2000 12:23:00 -0000 Message-id: <20000526054300.19884.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01045.html List-Id: >Number: 1262 >Category: java >Synopsis: Method with default access can be overridden in another package >Confidential: no >Severity: serious >Priority: medium >Responsible: apbianco >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Wed Dec 20 12:18:27 PST 2000 >Closed-Date: >Last-Modified: >Originator: Bryce McKinlay >Release: unknown-1.0 >Organization: >Environment: gcc version 2.96 20000525 (experimental) >Description: It is legal in Java for class to declare a method with the same name as a default (package-private) method in a foreign-package superclass. However, because it is invisible to the sub-class, the method should NOT override the superclasses method declaration. >How-To-Repeat: Compile the following code: // file: pkg1/A.java package pkg1; public class A { void foo () { System.out.println ("A.foo()"); } public static void main(String[] args) { A x = new pkg2.B(); x.foo(); } } // file: pkg2/B.java package pkg2; public class B extends pkg1.A { protected void foo () { System.out.println("B.foo()"); } } The correct output (as tested on IBM JDK 1.1.8 and Sun 1.2.2) should read: $ java pkg1.A A.foo() The gcj-compiled output is: $ ./pkg B.foo() >Fix: >Release-Note: >Audit-Trail: Formerly PR gcj/244 >Unformatted: