黑马程序员技术交流社区
标题:
关于接口实例化问题
[打印本页]
作者:
小小程序员
时间:
2014-10-14 21:51
标题:
关于接口实例化问题
对于接口是不能实例化的。
为什么对于下面的fun()方法内 却new了一个IA接口
而且编译,运行都是没问题的
哪位大神 可以给解释下
interface IA
{
void show();
}
class Demo
{
public static void fun(IA aObj){
aObj.show();
}
public static void main(String[] args)
{
fun(
new IA(){
public void show(){
System.out.println("A -->show()");
}
});
}
}
作者:
DreamSeeker
时间:
2014-10-16 07:52
这是个匿名内部类,你去看看毕老师视频,面向对象那个环节有一个视频是专门讲内部类的的,里面就有成员内部类、局部内部类和匿名内部类。
作者:
最给力回复
时间:
2014-10-16 12:10
匿名 内部类
作者:
ifinver
时间:
2014-10-16 14:09
本帖最后由 ifinver 于 2014-10-16 14:15 编辑
这不是匿名内部类的问题。。
比如List是个接口
new List() 是错误的,接口不能实例化
然而有个类
class NoName implements List{
NoName(){}
}
复制代码
NoName可以实例化了,它实现了List接口。上面的写法就很麻烦,jdk给简化成了:
new List(){
//.....
}
复制代码
其实就是系统在内部定义了一个类,实现了List接口,然后把它实例化出来。效果是一样的。不用变量接收存储这个引用 他就是匿名的 只能用一次,用个变量存储它,它就不是匿名的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2