黑马程序员技术交流社区

标题: 接口的几个问题!<已解决> [打印本页]

作者: 余银桂    时间: 2012-6-14 17:11
标题: 接口的几个问题!<已解决>
本帖最后由 余银桂 于 2012-6-14 17:50 编辑
  1. interface Foo{
  2.                           int k=0;
  3.                }
  4. public class Test2 implements Foo{
  5.          public static void main(String args[]){
  6.                     int i;
  7.                          Test2 test =new Test2();
  8.                          i=test.k;    //这个是什么意思?
  9. i=Test2.k;  //这个又是什么?
  10.                          i=Foo.k; //这个能直接调用?
  11.    }
  12. }


  13. 求各位帮忙解释一下这三个东西...
复制代码

作者: 张_涛    时间: 2012-6-14 17:22
这是一个在接口中定义属性的示例,需要注意的是:接口中的属性默认是static和final的,而静态属性可以直接通过类名访问
1) i=test.k;因为Test2实现了接口Foo,跟继承是一样的,那么Test2中的对象也可以访问到Foo中的k属性
2)   i=test.k;同样因为Test2实现了接口Foo,那么Test2中也可以访问到类名去访问到Foo中的k属性
3)   i=Foo.k;就是可以用类名(接口是特殊的类)来直接访问静态属性。
作者: 李盼    时间: 2012-6-14 17:31
首先,接口中的属性必定是静态和final的,所以i=Foo.k可以直接调用,这就是静态属性可以用类名加属性名调用。
其次,Test2实现了接口,那就具备接口中所有的属性。那么所以Test2中实现上已经有一个成员属性int k=0;所以以Test2创建的实例对象都可以直接掉用k。所以可以test.k
最后,因为这个k在接口中是静态和final的,那么在Test2中也是静态和final的。那么Test2.k 类名加静态属性直接调用!
作者: 郑传庆    时间: 2012-6-14 17:32
本帖最后由 郑传庆 于 2012-6-14 17:51 编辑

可以找一些相关接口的资料看下,比较简单

public class tewlf implements Foo {

        public static void main(String args[]) {
                int i;
                tewlf test = new tewlf();
                i = test.k; // 这个是什么意思?-------------这里是用tewlf的对象test调用接口Foo里的k
                 
                i = tewlf.k; // 这个又是什么?----------这里是直接用tewlf类调用接口Foo里的k
                 
                i = Foo.k; // 这个能直接调用?------可以,接口不能直接实例,但可以通过接口类来实现实例化:Foo fo = new tewlf()
        }

      
}


interface Foo {
         int k = 0;
}

作者: 王璐    时间: 2012-6-14 17:43
1.(i=test.k;)Test2实现接口Foo,所以继承了k,test.k是将test对象的变量k付给变量i。
2.(i=Test2.k;)接口Foo中成员由static和final修饰,如果不写,系统默认。对于静态成员,可以通过类名.成员名来访问
3.(i=Foo.k;)k是静态成员,所以可通过类名直接访问。
作者: 余银桂    时间: 2012-6-14 17:49
{:soso_e113:}谢了,一下被三个东西弄晕了




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