JLS changes for module impact on inheritance and overriding?

Karen Kinnear Karen.Kinnear at Sun.COM
Fri Feb 6 11:33:45 PST 2009


Alex,

With this JSR 294 proposal, would you expect to also change the JLS   
in the following ways? See the text
added in blue below relative to JLS 3rd edition.

I am currently assuming these changes in the prototype I am making  
with the hotspot vm.

thanks,
Karen

8.4.8 Inheritance, Overriding, and Hiding

A class C inherits from its direct superclass and direct  
superinterfaces all non-private methods (whether abstract or not) of  
the superclass and superinterfaces that are public, protected or  
declared module and in the same module as C, or declared with default  
access in the same package as C and are neither overridden (§8.4.8.1)  
nor hidden (§8.4.8.2) by a declaration in the class.

8.4.8.1 Overriding (by Instance Methods)

An instance method m1 declared in a class C overrides another instance  
method, m2, declared in class A iff all of the following are true:

C is a subclass of A.
The signature of m1 is a subsignature (§8.4.2) of the signature of m2.
Either
m2 is public, protected or declared module and in the same module as  
C, or declared with default access in the same package as C, or
m1 overrides a method m3, m3 distinct from m1, m3 distinct from m2,  
such that m3 overrides m2.
Moreover, if m1 is not abstract, then m1 is said to implement any and  
all declarations of abstract methods that it overrides.



More information about the jigsaw-dev mailing list