黑马程序员技术交流社区

标题: 这个程序里的return是什么作用啊,返回给谁啊? [打印本页]

作者: 图兰朵    时间: 2016-3-24 00:21
标题: 这个程序里的return是什么作用啊,返回给谁啊?
  1. class Test2_NoNameInnerClass {
  2.         public static void main(String[] args) {
  3.                 Outer.method().show();
  4.                 /*这里可以描述为Inter i = Outer.method();
  5.                                            i.show();*/
  6.         }
  7. }

  8. interface Inter {
  9.         void show();
  10. }

  11. class Outer {
  12.         public static Inter method() {
  13.                 return new Inter() {
  14.                         public void show() {
  15.                                 System.out.println("HelloWorld!");
  16.                         }
  17.                 };
  18.         }
  19. }
复制代码

作者: 水木风清然    时间: 2016-3-24 00:31
想帮助下来着,可是看了半天没看懂,我现在还在学java基础....帮你顶下贴吧
作者: 图兰朵    时间: 2016-3-24 00:38
水木风清然 发表于 2016-3-24 00:31
想帮助下来着,可是看了半天没看懂,我现在还在学java基础....帮你顶下贴吧

我也在学Java基础啊,这是前天上课讲的面试题,其实是个填空题,那个外部类outer里面就是需要填的,填的是匿名内部类,但是我就是那个return没有怎么搞懂,不知道返回给谁,是谁来接收
作者: xiepan    时间: 2016-3-24 00:51
看了半天没看懂你的代码?匿名对象都不用new???
作者: 图兰朵    时间: 2016-3-24 01:08
xiepan 发表于 2016-3-24 00:51
看了半天没看懂你的代码?匿名对象都不用new???

有new啊,这个是内部匿名类,那个return后面的整个代码就是内部匿名对象,就是Inter的子类对象,上面的注释就是说父类引用指向子类对象,
作者: CangYe    时间: 2016-3-24 01:20
这是一个匿名内部类,其实相当于是建立了一个Inter的子类
,return返回的是用子类类型的引用,输出结果为HelloWorld!
class Zi extends Inter{
         public void show(){
                  System.out.println("HelloWorld!");
         }
}
public static Inter method(){
         Inter i=new Zi;//父类引用创建子类对象,即多态
         return i;
}
所以Outer.method().show();-------=>i.show();

作者: wanghaishan_it    时间: 2016-3-24 01:26
我其实也有这个疑问,我也是新手。
作者: 715596417    时间: 2016-3-24 10:38
return 返回的是内部类的对象
作者: ckm666666    时间: 2016-3-24 11:02
这写法好新颖,涨姿势了
作者: 眯眯神    时间: 2016-3-24 11:03
return返回的是重写的Inter类型的实现类,返回给Other类的method方法,你看这个方法static后面跟的Inter是返回值类型
作者: 卢磊磊    时间: 2016-3-24 11:06
public static Inter method() {}这个方法定义的是需要的是一个返回Inter类型的数据,用return返回,而现在return的是一个匿名对象
作者: ckm666666    时间: 2016-3-24 11:18
return了一个实现Inter接口的匿名变量
Outer.method().show();
分开看要好理解的多,对象可以调用方法 Outer.method() 返回的返回值是一个 实现Inter接口的匿名变量,调用该匿名变量的重写方法show();
作者: 图兰朵    时间: 2016-3-26 02:29
CangYe 发表于 2016-3-24 01:20
这是一个匿名内部类,其实相当于是建立了一个Inter的子类
,return返回的是用子类类型的引用,输出结果为He ...

有一点理解了!
作者: 腾龙3158    时间: 2016-3-26 03:10
谁调用method 的方法,就返回给谁!并且返回的是接口inter的子类对象,在主方法中又调用show 方法,最后输出的是HelloWorld .
作者: as9600    时间: 2016-3-26 11:09
返回的是Inter的子类对象




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2