黑马程序员技术交流社区
标题:
return 匿名内部类
[打印本页]
作者:
潘才新
时间:
2013-7-12 03:24
标题:
return 匿名内部类
本帖最后由 杨兴庭 于 2013-7-13 15:19 编辑
一个不难的问题,我走不过去。我都蒙了,如图return返回一个对象,到输出语句怎么运行的?懂的朋友说一下运行原理
!
Z)N$MFI%9{SM7BCP`AM9V@H.jpg
(78.65 KB, 下载次数: 0)
下载附件
2013-7-12 03:16 上传
作者:
changweihua
时间:
2013-7-12 07:26
你的function产生一个Inner对象(实现Inter接口),Test.function()执行的结果是Inner的一个实例,然后调用自己的方法method,然后没有然后了
作者:
HM张勇
时间:
2013-7-12 08:42
Test.function()含义:类名.静态方法,function()语句返回的是建立一个对象,故Test.function()的意思实际上是创建了一个Inner对象,等同于Inner in = new Inner();
Test.function这个对象再调用方法method(),结果当然是method run了。
作者:
一木榜公
时间:
2013-7-12 08:49
本帖最后由 一木榜公 于 2013-7-12 08:51 编辑
<P>class InnerClassTest
{
public static void main(String[] args)
{
//Test.function().method();</P>
<P>
//以上这句等价于以下内容
Inter i = Test.function();// 类名调用静态方法 ,方法返回值是new Inner(),这句等价于
//Inter i = new Inner();这是多态,父类引用指向 子类对象
i.method(); // 因此这句等价于 new Inner().mehtod();
}
}</P>
复制代码
作者:
左手神刀
时间:
2013-7-12 10:16
看老师的的代码 你 要先从 主函数看起,
主函数就一条语句 Test.function().method();
我们知道点前面肯定是类名或者对象,所以第一个点前面是类名,就是Test这个类,点后面是方法名或者成员变量,就是function()方法。之所以不用new是因为他们都是静态的。
在看第二个点, 点儿前面的function方法最后返回的是个Inner对象,他也符合点儿前面是类名或者对象这个规则。在看点后面的内容,首先他带着括号,那就一定不是成员变量,那他就是方法,向上找你会发现他是Inner这个对象的method()方法。这个方法没有返回值,他只有一句代码就是System.out.println("method run");这一句执行的结果就是在屏幕上打印 Method run
作者:
潘才新
时间:
2013-7-13 00:31
我.....粗心。看错了,{:soso_e138:}
作者:
白_蓝(八公)
时间:
2013-7-13 01:11
其实这个你可以逐层分析的···Test是类~后面的function()很明显是要调用静态方法的,而function中返回的是Inner接口,也就是说Test.function()等价于Inner()方法,然后调用里面的method()方法
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2