接口与继承 -- 访问相同变量

来源:互联网 发布:淘宝好评返现 编辑:程序博客网 时间:2024/04/30 23:16
interface A{int x = 0;}class B {int x = 1;}public class Object1 extends B implements A {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("A.x="+A.x);
System.out.println("B.x="+B.x);//报错,父类中的属性是实例变量Object1 c = new Object1();A a = (A) c;B b = (B) c;System.out.println("c.x="+c.x);//报错,不知道访问的是父类还是接口中的xSystem.out.println("a.x="+a.x);System.out.println("b.x="+b.x);}}

其中System.out.println("B.x="+B.x); 和System.out.println("c.x="+c.x); 这两句代码会出现编译错误。

在屏蔽掉这俩句代码后的输出为:

A.x=0
a.x=0
b.x=1


1. A.x=0 -- 为什么直接调用接口A的属性i值正确。

因为在接口中所有的变量都默认是静态static的常量(final),不能被修改,否则编译报错。


2. System.out.println("B.x="+B.x); -- 报错,俩种修改方法:

   将父类B中的变量定义static静态类变量:static int x = 1;

  先实例化父类B,再调用它的变量值。如System.out.println("b.x="+b.x);



0 0
原创粉丝点击