黑马程序员技术交流社区
标题:
匿名内部类的运行顺序
[打印本页]
作者:
吴通
时间:
2012-8-21 21:30
标题:
匿名内部类的运行顺序
interface Inter
{
void method();
}
class InnerTest
{
public static void main(String[] args)
{
show(new Inter()
{
public void method()
{
System.out.println("hiahia");
}
});
}
public static void show(Inter in)
{
in.method();
}
}
这个程序的运行顺序是什么样的?详解 谢谢
作者:
赵俊杰
时间:
2012-8-21 21:43
本帖最后由 赵俊杰 于 2012-8-21 21:45 编辑
首先进入主函数main,main里面调用了静态方法show,而这个show方法又需要传参(参数类型为inter),所以这里new了一个inter传给它,此时调用show方法成功。接下来由show方法自行完成自己的任务。分析show,inter.method(),意思就是执行刚刚传进来的inter的方法"method",而inter当时也确实是带着method方法传进来的,那就执行inter带来的这个method方法吧,于是,System.out.println("hiahia"),控制台输出hiahia,程序结束。
作者:
唐杨老师
时间:
2012-8-21 21:48
先执行main方法里边的方法show(Inter in),
随后(new Inter() { })实例化一个匿名类对象,作为show方法的参数传入show
在show方法中 in作为传入参数的形参调用 对象的method()方法in.method();
由于是重写接口的方法,故而运行子类重写的方法.
最后打印字符串 "hiahia".
完毕!
作者:
全海波
时间:
2012-8-21 22:08
1.jpg
(34.71 KB, 下载次数: 49)
下载附件
2012-8-21 22:07 上传
希望能够帮助你!!
作者:
吴通
时间:
2012-8-22 20:02
多谢你们!这个问题解决了。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2