请问老师练习6-9,我写的合理吗?

请问老师练习6-9,我写的合理吗?

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
package com.imooc.test;
 
public class Test20 {
     
    public void getPlay(BallTest ballTest) {
        ballTest.play();
    }
     
    public static void main(String[] args) {
        //完成成员内部类内部测试
        BallTest.Inner_m inner_m = new BallTest().new Inner_m();
        inner_m.play();
         
        //完成方法内部类测试
        BallTest ballTest = new BallTest();
        System.out.println(ballTest.info());
         
        //完成匿名内部类测试
        Test20 test = new Test20();
        test.getPlay(new BallTest() {
             
            @Override
            public void play() {
                System.out.println("*******\n匿名内部类:\n打排球");
            }
        });
                           
    }
  
}
package com.imooc.test;

public class BallTest implements Ball{
    // 创建成员内部类Inner_m
	class Inner_m implements Ball{
		
		@Override
		public void play() {
			System.out.println("成员内部类:");
			System.out.println("打篮球");
		}
	}

	// 创建方法内部类
	public Object info() {
		class Inner_f{//
			
			public String play() {
				return "*******\n方法内部类:\n打乒乓球";
			}
		}
		
		return new Inner_f().play();
	}

	// 定义一个方法void playBall(Ball ball),调用play()方法
	public void playBall(Ball ball) {
		
		Ball.super.play();
	}
}
package com.imooc.test;

public interface Ball {
	
    //创建抽象方法play():void
	default void play() {}
}


正在回答

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

2回答

你好!

1、方法内部类的类型改为void,Inner_f实现Ball接口,重写play方法,内部类外面info方法里面通过new Inner_f().play();完成play方法调用。测试类中ballTest.info();完成测试。匿名内部类完成的没有问题,因为BallTest实现了Ball接口。

2、playBall方法是调用接口中的play方法。

祝学习愉快~

  • 专业躺鸡 提问者 #1
    非常感谢!
    2017-08-09 09:18:36
  • 请问老师,这里的Ball接口里 说要创建抽象方法,但是 这个代码 创建的是默认方法,所以BallTest类里面没有重写play方法也不会报错,而且可以用super.的方式来在playBall方法里调用。要是我按照备注的要求,在Ball接口中创建了abstract void play();方法的话,我在BallTest类中就必须要实现接口中所有抽象方法,即必须实现play方法才不会报错。那么该如何来用一个playBall方法调用接口Ball中的play方法,才会让程序不报错呢?
    2017-08-16 22:46:22
提问者 专业躺鸡 2017-08-08 16:40:19
  1. 方法内部类和匿名内部类并没有和Ball接口产生代码上的联系,但我又不知道怎么写?

  2. 这个playBall方法的意思是什么?

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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