b1.a
接口中定义的是常量是不可以通过对象来调用的。A b1 = new B(); 属于多态模式,在编译阶段会看等号左边,而左边是接口A,其不能调用其常量b,所以会报错。
你把b1的类型改成B就能了,A类没有那个变量
接口中的的变量应该使用final关键字来修饰。(关键不在这)你的b1.a,a是类B中的成员变量,而b1的类型是A。你虽然使用的是B类的构造器,但是接收参数类型使用的是接口A类型,而A类型中没有成员变量a,因此使用b1.a会报错。