interface Test
{
void func();
}
class Demo
{
public static void main(String[] args)
{
//补足代码(匿名内部类)
//2:
Test t=new Test(){
public void func()
{
System.out.println("Test.func()>>>>>run");
}
};
//3:
new Demo().show(t);
}
void show(Test t)//1:
{
t.func();
}
}
/*
原代码只有序号1部分。
1:show方法的参数是Test t,说明要传入一个Test的对象,而Test是一个接口,那么要创建一个类实现这个接口。题目说是要用匿名内部类的方法。那么根据匿名内部类的格式:new 父类或者接口名(构造函数参数列表){子类内容};
2:我用Test t接收一下,方便你理解。匿名内部类,就是内部类的简写格式,就是一个带执行体的匿名子类对象。在{}里面,实现Test接口的func方法。
3:调用show方法,并将创建的匿名内部类作为参数传递。因为show方法不是静态的,所以要创建Demo类的对象:Demo d=new Demo();
因为只是调用一次,所以可以采用匿名对象的形式来写:new Demo().show(t),
4:最后把2,3步优化一下,将创建的匿名内部类对象作为参数,传递给show方法就成了:
new Demo().show(new Test()
{
public void func(){}
});
不知道这样能看懂不?你只要把匿名内部类的前提,格式,概念理解了,这个思路就很好想到。
*/ |