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