黑马程序员技术交流社区

标题: 【急】关于接口的问题,在这里卡了! [打印本页]

作者: 刘利民    时间: 2013-6-14 21:22
标题: 【急】关于接口的问题,在这里卡了!
本帖最后由 孙百鑫 于 2013-6-17 20:50 编辑

//这应该是个简单的问题,但是想了好久,发现自己还是转不过弯来,求大神解答一下,谢谢!
//为什么Test.NUM、Inter.NUM也都合法,他们分别是怎么调用NUM的。

interface Inter
{
        public static final int NUM = 3;
        public abstract void show();
}

class Test implements Inter
{
         public void show(){}
}
class Interface Demo
{
         public static void main(String[] args)
       {
                Test t = new Test();
                System.out.println(t.NUM);
                System.out.println(Test.NUM);
                System.out.println(Inter.NUM);           

        }
}


作者: 姚志远    时间: 2013-6-14 21:42
从接口映射到实现类上面了 所以就可以直接调用了
作者: 许聪聪    时间: 2013-6-14 22:07
具体咋回事,请看代码中的注解
  1. interface Inter
  2. {
  3.         public static final int NUM = 3;
  4.         public abstract void show();
  5. }
  6. class Test implements Inter
  7. {
  8. //首先看一下这里的备注!!这里当子类Test实现了Inter的时候,事实上是会从父类中继承NUM变量的
  9. //        public static final int NUM = 3;
  10.         public void show(){}
  11. }
  12. class InterfaceDemo
  13. {
  14.         public static void main(String[] args)
  15.         {
  16.                 Test t = new Test();
  17.                 /*
  18.                  * 子类实现了Inter之后继承了Inter类中的NUM常量
  19.                  * t.NUM为子类对象,调用成员变量
  20.                  */
  21.                 System.out.println(t.NUM);
  22.                
  23.                 //因为子类继承了Inter继承了Inter中的NUM,而且,NUM为静态的,所以可以类名.变量名
  24.                 System.out.println(Test.NUM);
  25.                 //虽然说接口不能创建对象,但是接口中的对象都是静态的常量,所以也可以进行接口名.变量名
  26.                 System.out.println(Inter.NUM);           
  27.         }
  28. }
复制代码

作者: j816326    时间: 2013-6-14 22:39
简单的来说吧,Inter接口里的那个成员变量使用静态修饰的 。所以不用创建对象也可以使用,直接用(类名/接口名).变量名 调用。而Test类继承了Inter接口。自然继承了Inter里的没有私有的成员变量。
作者: 王靖远    时间: 2013-6-14 22:58
接口是最顶级的类了,接口中的所有方法都是没有实体的,接口有什么用呢?
在实现接口的时候,可以具体实现方法的主体,但是,如果实现一个接口,那么这个接口里面的所有方法都要实现
OK,知道这些了,定义成员变量?因为,java中没有多重继承,只可以实现多个接口,而有很多的天然属性,也就是static final这种类型数据,我们通过实现多个接口,就可以获得各种不同的天然属性。
在实现类中具体变量没有限制,只要是数据类型匹配就可以。
作者: 刘利民    时间: 2013-6-15 08:32
谢谢各位大神们,解决了!{:soso_e191:}
作者: 张承富    时间: 2013-6-15 12:16
静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用
内存,静态变量位于方法区,被类的所有实例共享。静态变量可以直接通过类名进行访问,其生命周期取决于类的生命周期。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2