比较常见的例子 是Swing里的
EventQueue.invokeLater(new Runnable(){
public void run(){
...............
}
})
还有一些 new ActionListener()之类的内部匿名类,这些匿名类也只是实现了这些接口,并且必须覆写接口的中的方法。
总而言之 ,接口是不能实例化的,因为接口中只有方法名称,没有方法体,所以没办法实例化
对于一些实现了接口的内部匿名类,虽然表面形式是接口被new 出来了,但是不要被表象迷惑了,多熟悉一下这种写法,就自然知道其本质只是一个 实现了某种接口的类
接口是不能直接实例化的,你这里的d必然是某一个实现了IDependency 借口的class传递进来的。不过也经常这样用到,看上去是直接实例化:
Runnable task = new Runnable() {
public void run() {
..
}
}
这里必然要实现接口的方法。
Java中接口是不能被new出来的,平时开发中接口都有自己的实现类,这样可以把子类实例化然后赋值给父类,比如 PersonService personService = new PersonServiceImpl()现在我们项目都使用Spring管理,通过注解来注入,private PersonService personService然后在上面加入一个@Autowrite注解,这个注解也是把子类实例化赋值给父类了,这也就是我们常常说的多态.