Overriding interface's variable?

后端 未结 4 2028
抹茶落季
抹茶落季 2020-12-10 04:29

As I read from various Java book and tutorials, variables declared in a interface are constants and can\'t be overridden.

I made a simple code to test it

<         


        
4条回答
  •  情歌与酒
    2020-12-10 05:19

    It is not overridden, but shadowed, with additional confusion because the constant in the interface is also static.

    Try this:

    A_INTERFACE o = new A_CLASS();
    System.out.println(o.var);
    

    You should get a compile-time warning about accessing a static field in a non-static way.

    And now this

    A_CLASS o = new A_CLASS();
    System.out.println(o.var);
    System.out.println(A_INTERFACE.var);  // bad name, btw since it is const
    

提交回复
热议问题