A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 吴通 中级黑马   /  2012-8-21 21:30  /  3389 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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-22 20:34

评分

参与人数 1技术分 +1 收起 理由
张立江 + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
本帖最后由 赵俊杰 于 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,程序结束。

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1

查看全部评分

回复 使用道具 举报
先执行main方法里边的方法show(Inter in),
随后(new Inter() { })实例化一个匿名类对象,作为show方法的参数传入show

在show方法中 in作为传入参数的形参调用 对象的method()方法in.method();

由于是重写接口的方法,故而运行子类重写的方法.

最后打印字符串 "hiahia".      

完毕!

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1

查看全部评分

回复 使用道具 举报

希望能够帮助你!!

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1

查看全部评分

回复 使用道具 举报
多谢你们!这个问题解决了。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马