黑马程序员技术交流社区

标题: 麻烦帮我看看,一个关于接口的问题。 [打印本页]

作者: 小泉真也    时间: 2014-1-6 14:42
标题: 麻烦帮我看看,一个关于接口的问题。
  1. interface Inter
  2.         public static final int NUM = 3;
  3.         public abstract void show();
  4.        
  5. }

  6. class Test implements Int
  7. {
  8.         public void show(){}
  9. }


  10. class InterfaceDemo
  11. {
  12.         public static void main(String[] args)
  13.         {
  14.                 Test t = new Test();
  15.                
  16.                 System.out.println(t.NUM);
  17.                 System.out.println(Test.NUM);
  18.                 System.out.println(Inter.NUM);
  19.                 //结构都是3
  20.         }
  21.        
  22. }
复制代码
这里面的,最后三句打印输出的语句,我看了没转过弯来= =||
为什么结构都是3?
【第一句】Test t = new Test();新建了一个t,然后t 调用了int NUM = 3?
【第二句】Test.NUM?
【第三句】Inter.NUM?
它是怎么调用(接口?)的?完了,我有点乱。
谁能帮我梳理一下,就后面这个打印输出。

作者: jibenwujie    时间: 2014-1-6 14:55
我如果这么写你可能就好理解了一点了 ,
Inter inter = new Test();
接口中所写的代码呢就是一种声明,一种约束,需要子类来进行实现
所以说归根结低,你打出的就是:
public static final int NUM = 3;
作者: 浮出一个美    时间: 2014-1-6 15:54
Test类实现了Inter接口,那么Test当然也可以访问Inter里的静态常量NUM,类似于继承。
由于NUM是静态的,所以用不用实例直接用类名也可以访问。
作者: 午夜b'Boy    时间: 2014-1-6 15:58
对呀!实现接口的类。相当于这个接口的子类,子类继承父类理所当然啦
作者: 工善器    时间: 2014-1-6 16:04
哥们给你看看我的:
一样的程序
  1. package first;
  2. /*接口对变量的使用*/
  3. interface Inter
  4. {
  5.         public static final int NUM=3;
  6.         public abstract void show();
  7.        
  8.         }
  9. class UseInter implements Inter
  10. {
  11.         public void show(){}
  12.         }
  13. class Test{
  14.         public static void main(String[] args) {
  15.                 UseInter a=new UseInter();
  16.                 System.out.println("实现接口的类的对象在使用变量:"+a.NUM);
  17.                 System.out.println("实现接口的类在使用变量:"+UseInter.NUM);
  18.                 System.out.println("接口在使用变量"+Inter.NUM);               
  19.         }
  20. }

  21. 结果:
  22. 实现接口的类的对象在使用变量:3
  23. 实现接口的类在使用变量:3
  24. 接口在使用变量3
复制代码

作者: 工善器    时间: 2014-1-6 16:08
对比一下你就看出来了,是结果都是3,后面的implements 是接口的名字,你两者的名字是不一样的,哥们仔细看视频,正确的程序见我给你发的代码。你对接口得到概念还是没有概念。好好看视频的。
作者: 小泉真也    时间: 2014-1-6 16:23
工善器 发表于 2014-1-6 16:08
对比一下你就看出来了,是结果都是3,后面的implements 是接口的名字,你两者的名字是不一样的,哥们仔细看 ...

仔细看完之后,大体上了然了!好!!!
作者: 工善器    时间: 2014-1-6 17:09
小泉真也 发表于 2014-1-6 16:23
仔细看完之后,大体上了然了!好!!!

不谢,哈哈,是29么?




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