Cyclic definition of overriding

Dan Smith daniel.smith at oracle.com
Tue Jun 9 21:27:23 UTC 2015


> On Jun 9, 2015, at 3:12 PM, Alex Buckley <alex.buckley at oracle.com> wrote:
> 
> On 6/9/2015 1:36 PM, Alex Buckley wrote:
>> Knowing to apply 9.4.1.1 rather than 8.4.8.1 is extremely subtle. Once
>> you do, it's plain that Test1.foo() does not override-from-Test1 the
>> method foo() declared in Test2, and vice versa, thus class Test inherits
>> both foo() methods (harmlessly). I will add cross-refs from 8.4.8 to
>> both 8.4.8.1 and 9.4.1.1 to clarify.
> 
> In particular, the 8.4.8 clause:
> 
> "such that m' from D' overrides the declaration of the method m."
> 
> should read:
> 
> "such that m' overrides from D' (8.4.8.1, 9.4.1.1) the declaration of the method m." -- note the relocation of "from D'".
> 
> (Plus class Test needs to be abstract of course.)

Yes, this is good.  "From D' overrides" is awkward.

The confusion isn't so much about Chapter 8 vs. Chapter 9 -- both immediately assert that Test1 is a subclass/subinterface of Test2.  The problem is in recognizing that D' (Test1) is not the same as D (Test), which this change makes more clear.  (Hope I'm not mixing up Test1 and Test2 here, but if so, you know what I mean.)

—Dan


More information about the compiler-dev mailing list