关于匿名内部类语句输出问题,谢谢!

关于匿名内部类语句输出问题,谢谢!

package neibulei;


public class Test {

public void one(Ball ball) {

ball.play();

}

public static void main(String[] args) {


Test two =new Test();

two.one(new Ball() {

public void play() {

System.out.println("**********");

System.out.println("匿名内部类:");

System.out.println("打排球");

}

});

}

}

为什么如上代码,在one方法中写了此句ball.play();之后就会在控制台输出two.one()方法里的play()方法里的输出语句,否则就不行呢?谢谢!

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕雪 2020-05-23 20:25:44

原因还是由于ball.play();ball是指的谁呢,就是下面的红框的对象。它调用play,当然就是走的这个play了。

http://img1.sycdn.imooc.com//climg/5ec9159809526d5c05330425.jpg

同学把这里改一下,不要用匿名内部类。你把它定义在外面,就知道为什么了,那样更清楚,让你更能明白匿名内部类的写法与调用的规则。祝:学习愉快

  • 提问者 Ceoking #1
    基本上明白了,谢谢你!
    2020-05-23 20:35:03
  • 提问者 Ceoking #2
    问一下,为什么主方法之外的one方法里不写ball.play();那主方法之内的one方法里的play()里的输出语句就无法输出到控制台呢?谢谢!
    2020-05-24 19:51:16
  • 好帮手慕雪 回复 提问者 Ceoking #3
    不写的话,相当于是没有调用这个方法,没调用是不会执行的。上图的红框play()部分相当于是在定义方法,并不是调用方法
    2020-05-25 10:17:24
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师