(访问修饰符都是 public )
我定义了一个接口: interface InA
      一个抽象类:abstract  AbsB
 
接口和抽象类中都有一个静态变量  static int i我没有继承这个抽象类 ,也没有实现这个接口
我写个一个类。用 InA.i  和  AbsB.i  (没报错,运行成功了)
通过 (类名.静态变量) 这中方法居然对了。(但事实上我用的不是类名啊,而是抽象类名和接口名??)我就不明白了,为什么能这样调用抽象类和接口的静态变量。??
能不能给我讲一下原理。

解决方案 »

  1.   

    你是定义了static int i,静态变量, 所以在编译的时候,系统就为这个变量分配内存地址,空间,你当然可以直接调用。 如果不是静态的话,就得对这个类进行实例化后,才会对变量分配内存, 当然抽象类是不允许实例化的
      

  2.   

    我觉得静态变量在类里边可以直接调用,不管是抽象类或者是接口,可以直接class.静态变量进行调用,比如你的常量类就可以做为一个接口,它里边的变量都是final型的,要的话就可以直接取来用,和实例化没有什么直接的关系把.