黑马程序员技术交流社区

标题: 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)

Z)N$MFI%9{SM7BCP`AM9V@H.jpg

作者: 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 编辑

  1. <P>class InnerClassTest
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 //Test.function().method();</P>
  6. <P>
  7.                 //以上这句等价于以下内容
  8.                 Inter i = Test.function();// 类名调用静态方法 ,方法返回值是new Inner(),这句等价于
  9.                                                     //Inter i = new Inner();这是多态,父类引用指向 子类对象
  10.                 i.method();                // 因此这句等价于 new Inner().mehtod();



  11.         }
  12. }</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