Java匿名内部类的问题

charon_ni 2018-02-11 11:19:53
两个问题
1.调用子类特有的方法是不是只能用局部内部类,不能用匿名内部类
2.在这里为什么只要设置一个return,就可以.run().sleep()就可以了,返回的this指的是什么。这个代码是可以运行的,但是改为.sleep().run()就报错。所以并不是理解这里的this。
...全文
811 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
昵称都用完了 2018-02-16
  • 打赏
  • 举报
回复
顶一下#4楼。说得挺清楚了。 你不return this一下,后面的.sheep()怎么运行呢? 所以必须return this啊。
12Dong 2018-02-13
  • 打赏
  • 举报
回复
你的这个Animal run()返回的this 指的是 这个Animal对象 你使用的.run().sleep()可以理解为 Animal这个对象的sleep()方法 但是如果反过来 .sleep().run()方法 就错了 这个未知的东西没有run()方法
appleyk 2018-02-11
  • 打赏
  • 举报
回复
new一个对象,调用自己的run方法(重写抽象类animal中的run方法),run方法返回这个对象的实例,然后拿着这个实例调用内部的方法sleep

简单点就是,run里面的return this -- 这个this 就是 new 出来的 Animal的对象,有了对象你才能访问对象成员,比如调用slepp方法,你如果反过来的话,先调用sleep方法,也是可以的,但是你.sleep().run() 是什么意思呢? sleep返回类型void,不是一个对象,怎么能当对象用呢?


maradona1984 2018-02-11
  • 打赏
  • 举报
回复
this是指对象本身,非静态方法需要调用某个对象的方法,在方法里使用this就是拿到这个对象,return this就是方法返回这个对象,然后可以调用其他方法
demystify 2018-02-11
  • 打赏
  • 举报
回复
原因很简单,你的sleep接口返回为void,调用sleep().run()会报空指针错误。java里this就一个意思,就是当前的类对象本身

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧