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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  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. }
复制代码

14 个回复

倒序浏览
想帮助下来着,可是看了半天没看懂,我现在还在学java基础....帮你顶下贴吧
回复 使用道具 举报
水木风清然 发表于 2016-3-24 00:31
想帮助下来着,可是看了半天没看懂,我现在还在学java基础....帮你顶下贴吧

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

有new啊,这个是内部匿名类,那个return后面的整个代码就是内部匿名对象,就是Inter的子类对象,上面的注释就是说父类引用指向子类对象,
回复 使用道具 举报
这是一个匿名内部类,其实相当于是建立了一个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();
回复 使用道具 举报
我其实也有这个疑问,我也是新手。
回复 使用道具 举报
return 返回的是内部类的对象
回复 使用道具 举报
这写法好新颖,涨姿势了
回复 使用道具 举报
return返回的是重写的Inter类型的实现类,返回给Other类的method方法,你看这个方法static后面跟的Inter是返回值类型
回复 使用道具 举报
public static Inter method() {}这个方法定义的是需要的是一个返回Inter类型的数据,用return返回,而现在return的是一个匿名对象
回复 使用道具 举报
return了一个实现Inter接口的匿名变量
Outer.method().show();
分开看要好理解的多,对象可以调用方法 Outer.method() 返回的返回值是一个 实现Inter接口的匿名变量,调用该匿名变量的重写方法show();
回复 使用道具 举报
CangYe 发表于 2016-3-24 01:20
这是一个匿名内部类,其实相当于是建立了一个Inter的子类
,return返回的是用子类类型的引用,输出结果为He ...

有一点理解了!
回复 使用道具 举报
腾龙3158 来自手机 中级黑马 2016-3-26 03:10:03
14#
谁调用method 的方法,就返回给谁!并且返回的是接口inter的子类对象,在主方法中又调用show 方法,最后输出的是HelloWorld .
回复 使用道具 举报
返回的是Inter的子类对象
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马