playball方法到底起到了什么作用

playball方法到底起到了什么作用

BallTest类源码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
public class BallTest implements Ball {
    public class Inner_m{
        //begin 构造方法
        //无参构造方法
        public Inner_m(){
             
        }
        //end
         
        //begin 成员方法
        public void play(){
            System.out.println("成员内部类:");
            System.out.println("打篮球");
        }
        //end
    }
     
    public void info(){
        class Inner_f{
            //begin 构造方法
            //无参构造方法
            public Inner_f(){
                 
            }
            //end
 
            //begin 成员方法
            public void play(){
                System.out.println("方法内部类:");
                System.out.println("打乒乓球");
            }
            //end
        }
        new Inner_f().play();
    }
 
    public void playBall(Ball ball){
        ball.play();
    }
 
    @Override
    public void play() {
        // TODO Auto-generated method stub
         
    }
}

Test类源码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class Test {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        BallTest.Inner_m one=new BallTest().new Inner_m();
        one.play();
        System.out.println("=======================================");
        new BallTest().info();
        System.out.println("=======================================");
        new BallTest().playBall(new Ball(){
 
            @Override
            public void play() {
                // TODO Auto-generated method stub
                System.out.println("匿名内部类:");
                System.out.println("打排球");
            }
        });
 
    }
 
}

在这个里面没有看到BallTest类中的playball方法起作用啊?是我的代码有什么问题吗?

正在回答

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

1回答

同学有在Test类中调用BallTest中的palyBall方法,代码也没问题。下图就是同学在测试类中写的关于palyBall方法的代码。

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

playBall(Ball ball)方法是多态的一个很好的体现,该方法表示打球的意思,具体打什么球,就看方法的参数具体是Ball的哪个实现类的对象。你的测试类中是打排球,如果是其他的Ball的实现类,那么就是打其他球,比如乒乓球篮球等。所以根据传入的对象不同,输出结果也不同,这就是多态的体现。

多调用几次这个方法就能看出来效果了。

如果我的建议解决了你的问题,请采纳,祝学习愉快!


  • 风中随影 提问者 #1
    那也就是说如果我在调用playball方法的时候是这么调用的话,new BallTest().playBall(new BallTest().new Inner_m()),这样子到时候输出的就是成员内部类,打篮球?但是这样子的话编译报错啊
    2018-04-14 09:33:56
  • 慕布斯37364 回复 提问者 风中随影 #2
    Inner_m()这个类是BallTest()类中的成员内部类,但是并没有实现Ball接口,不属于Ball接口的实现类,所以把Inner_m()类的实例传入playBall(Ball ball)方法参数类型是错误的,造成编译报错。
    2018-04-15 21:48:17
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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