当前位置: 代码迷 >> Java相关 >> 接口名叫什么可以直接调用它里面的属性值
  详细解决方案

接口名叫什么可以直接调用它里面的属性值

热度:82   发布时间:2016-04-22 20:57:46.0
接口名为什么可以直接调用它里面的属性值

代码如下:
interface num{
int  k=6;
}
public class NumIpml implements num{

static  int  k=10;
public static void main(String[] args) {
System.out.println("接口中的属性 k的值为 :k="+num.k);
System.out.println("实现类中的属性k的值为:k="+NumIpml.k);
}

}
输出结果:
        接口中的属性 k的值为 :k=6
               实现类中的属性k的值为:k=10

为什么“System.out.println("接口中的属性 k的值为 :k="+num.k); ”  这句代码可以用接口名直接调用它里面的属性值?
------解决思路----------------------
接口中的属性默认为 public static final, 因此你可以直接通过接口名进行访问
------解决思路----------------------
你可以这样理解抽象类是特殊的类,他里面有抽象方法,不能直接初始化

而接口则是特殊的抽象类,它里面全是抽象方法,他的成员变量也全是 public static final 的

虽然接口不能创建对象,但是对象可以实现接口,这样我们在创建接口的时候就会拥有对象的所有属性,你也可以调用对象,至于怎么在内存中运行,你可以详细看看 java 的继承机制
------解决思路----------------------
引用:
意思就是:可以将接口看做一个特殊类来对待,类名可以直接调用静态属性,所以接口名也可以直接静态属性,不知这样理解可不可以的?


静态资源是在类加载时就分配好空间并初始化的  不依赖实例  实例的变量(成员变量)是new之后才分配空间
  相关解决方案