标题: 匿名内部类 [打印本页] 作者: air 时间: 2013-11-9 18:01 标题: 匿名内部类
interface Test
{
void func();
}
class
{
public static void main(String[] args)
{
//补足代码;(匿名内部类)
new Demo().show(new Test()
{
public void func(){}
});
}
void show(Test t)
{
t.func();
}
}
复制代码
实在是被这视频里的测试题搞得头疼,老师讲的又快,说这道题比较综合,又好像理解不理解都没关系.
可是我实在是想知道,这里面的关系我理不清,.一堆括号看的我晕 啊~~~
求帮助讲解答案意义作者: 零下五度的水 时间: 2013-11-9 18:09
new Demo().show( ... ) 获得一个 Demo 类的 匿名实例对象,然后调用该对象的 show 方法
show 方法的参数是 Test t 所以填了 new Test()
而 Test 是一个接口,需要实现接口的 func() 方法 所以你这个 new 的 Test 得实现这个方法{。。。}
其实匿名内部类就是写一个类的子类/实现类 作者: 649个伤心的理由 时间: 2013-11-9 18:25
其实可以把认为存在class Param implements Test
{
public void func(){}
};
Test t=new Param()
new Demo.show(t)
Param实现了接口Test中func方法,然后新建一个对象t,将t传给了show。
可以把您看起来比较纠结的那部分代码看做上述代码的简写形式,简写无非是把定义类和生成对象的操作一气呵成!作者: 何超 时间: 2013-11-9 20:07
new Demo().show(new Test()
{
public void func(){}
});
实际上你要调用 show()方式就需要Demo的一个对象 所以 new Demo() 好,此时对象出来了。我们用它调用show()方法