接口不是不能够创建吗?下面的代码怎么会事呀?
//创建一个接口
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添加的,然后程序就能运行了。
}
}
到底是怎么回事呀???

解决方案 »

  1.   

    它是不是隐式声明了一个叫jiekou的类
      

  2.   

    接口确实是不能NEW的
    但这里不是创建借口,这是创建了个匿名类类
    http://my.csdn.net/my/favorite
      

  3.   

    public void fangfa(jiekou s){
    System.out.println("nihao");
    }  这个方法传的是借口类型的参数  p.fangfa(new jiekou(){public void pp() {}});//方法括号里面的是myeclipse添加的,然后程序就能运行了。
    }
       这里调用的时候 new 了一个接口类型的,并且重写了里面的方法,所以可以实现
      

  4.   

    new jiekou(){public void pp() {}}
    这个是不是一个类
    但是你不知道他的名字所以就叫匿名类了。
      

  5.   

    对,你可以看下编译后的class文件,已经多了一个,其实是创建了一个实现此接口的匿名内部类。