当前位置:编程学习 > JAVA >>

接口的小问题

接口不是不能够创建吗?下面的代码怎么会事呀?
//创建一个接口
interface jiekou{
public abstract void pp();
}
public class test {
public void fangfa(jiekou s){
System.out.println("nihao");
}
 public static void main(String[] args) {
test p=new test();
p.fangfa(new jiekou(){public void pp() {}});//方法括号里面的是myeclipse添加的,然后程序就能运行了。
}
}
到底是怎么回事呀??? --------------------编程问答-------------------- 它是不是隐式声明了一个叫jiekou的类 --------------------编程问答-------------------- 接口确实是不能NEW的
但这里不是创建借口,这是创建了个匿名类类
http://my.csdn.net/my/favorite --------------------编程问答-------------------- 这里创建了一个实现该接口的匿名类,语法规则记住好了 --------------------编程问答-------------------- 能详细点吗??? --------------------编程问答--------------------
引用 4 楼  的回复:
能详细点吗???
创建了一个实现该接口的匿名类 --------------------编程问答--------------------
引用 5 楼  的回复:
引用 4 楼 的回复:

能详细点吗???
创建了一个实现该接口的匿名类

具体是怎么实现的??? --------------------编程问答-------------------- 何为接口的匿名类? --------------------编程问答-------------------- 匿名类,新建了一个实现这个借口的类的实例 --------------------编程问答-------------------- 下面你在调用函数的时候,不是实现了那个接口的虚函数吗,这样就可以了啊 --------------------编程问答-------------------- 当实现借口的类,需要用的地方只有个别地方,那么可以用一个匿名内部类来代替它。匿名内部类他必然实现某个借口(同时实现其中的方法)或者继承某个基类(实现其中的某个方法)。(个人愚见不对忘大家指出共同学习)。 --------------------编程问答-------------------- 接上面的应该是“或者继承某个基类(从写其中的某些方法)”),(个人愚见不对忘大家指出共同学习)。 --------------------编程问答-------------------- public void fangfa(jiekou s){
System.out.println("nihao");
}  这个方法传的是借口类型的参数  

p.fangfa(new jiekou(){public void pp() {}});//方法括号里面的是myeclipse添加的,然后程序就能运行了。
}
   这里调用的时候 new 了一个接口类型的,并且重写了里面的方法,所以可以实现 --------------------编程问答-------------------- new jiekou(){public void pp() {}}
这个是不是一个类
但是你不知道他的名字所以就叫匿名类了。 --------------------编程问答-------------------- 创建了一个实现该接口的匿名类 --------------------编程问答-------------------- 对,你可以看下编译后的class文件,已经多了一个,其实是创建了一个实现此接口的匿名内部类。
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,