Formal model for defender method resolution

Paul Benedict pbenedict at
Mon Jan 31 22:00:12 PST 2011

On Mon, Jan 31, 2011 at 10:53 PM, Howard Lovatt <howard.lovatt at>wrote:

> Object m(); // means re-abstract (assuming it has a default, if it
> doesn't then it is still abstract - no error)
> Object m() default super; // means inherit the super method even
> though I have redefined the method (error if no super default or more
> than one super default exists)
> Object m() default A.super; // means explicitly inherit the default
> from super interface A (error if A isn't a super interface or if m
> doesn't have a default in A)
Isn't this creeping close, in some ways, to the "virtual" keyword of C++? I
think that approach has serious drawbacks, where some functions are
overridable but others are just redefined.


More information about the lambda-dev mailing list