可以重新初始化接口变量吗?

Dip*_*686 1 java static final interface

interface abs{
 int a=10;// by default final static
     void callme(); 
}
class B implements abs{
    int a =11;// reinitializing

    void call()
    {
            System.out.println("No problem"+a);
    }
    public void callme()
    {
            System.out.println("Call me"+a);
    }

}
class main{


    public static void main(String args[]){

        B m=new B();
        m.call();
        m.callme();
    }

}
Run Code Online (Sandbox Code Playgroud)

在Herbert Schildt的书中,我读过接口变量是默认的Final和static.这隐含地意味着它将像一个常量.但是当我在上面提到的代码中为变量a分配11时,它没有给出任何错误.

o/p没问题11打电话给我11

Kon*_*kov 5

您没有重新初始化变量,但是您正在隐藏变量.

要访问absa成员,您必须使用接口名称来引用它.就像是:

System.out.println("No problem" + abs.a);
Run Code Online (Sandbox Code Playgroud)