黑马程序员技术交流社区
标题:
接口的几个问题!<已解决>
[打印本页]
作者:
余银桂
时间:
2012-6-14 17:11
标题:
接口的几个问题!<已解决>
本帖最后由 余银桂 于 2012-6-14 17:50 编辑
interface Foo{
int k=0;
}
public class Test2 implements Foo{
public static void main(String args[]){
int i;
Test2 test =new Test2();
i=test.k; //这个是什么意思?
i=Test2.k; //这个又是什么?
i=Foo.k; //这个能直接调用?
}
}
求各位帮忙解释一下这三个东西...
复制代码
作者:
张_涛
时间:
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