日期:2014-05-20  浏览次数:20621 次

接口和抽象的特别问题!!!
(访问修饰符都是   public   )
我定义了一个接口:   interface   InA
            一个抽象类:abstract     AbsB
 
接口和抽象类中都有一个静态变量     static   int   i

我没有继承这个抽象类   ,也没有实现这个接口
我写个一个类。用   InA.i     和     AbsB.i     (没报错,运行成功了)
通过   (类名.静态变量)   这中方法居然对了。(但事实上我用的不是类名啊,而是抽象类名和接口名??)

我就不明白了,为什么能这样调用抽象类和接口的静态变量。??
能不能给我讲一下原理。


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