jls overridding description

Dan Smith daniel.smith at oracle.com
Wed May 20 15:50:15 UTC 2015

> On May 20, 2015, at 7:24 AM, konstantin barzilovich <konstantin.barzilovich at oracle.com> wrote:
> Hello,
> Thank you for the answer.
> As I understand, you said that jls- can be false while jls- is true.

Right: you can have mC with a subsignature of mA, but still inherit mA.

> But is it possible that jls- is false while jls- is true? (the opposite situation)

Can you not inherit mA, but choose an mC that does not have a subsignature of mA?  Sure.  Note that the selection of mA and mC is pretty unrestricted -- this subsignature clause it what limits the set of methods to things you'd intuitively expect to consider.

So, for example:

public class A {
    public void foo() {} // mA

public class B {
    public void bar(int arg) {} // mC
    public void foo() {}

Is A a superclass of C?  Yep.  Does C inherit mA?  Nope -- the declaration of another 'foo' method prevents it.  Is mA public?  Yep.

But mC definitely does not override mA.


More information about the compiler-dev mailing list