分别通过成员内部类、方法内部类、匿名内部类完成接口Ball,在测试类BallTest中的调用。
程序参考运行效果图如下:

任务
任务分析:
- 创建接口Ball
- 创建外部类BallTest
- 定义方法 void playBall(Ball ball),调用接口中的 play( ) 方法
- 分别通过成员内部类、方法内部类以及匿名内部类完成接口实现
- 在BallTest中,创建成员内部类 Inner_m 实现接口Ball,在类中重写 play( ) 方法,输出两条信息,分别为”成员内部类:”和”打篮球”
- 在BallTest中, 创建成员方法 info() ,在方法中创建方法内部类 Inner_f 实现Ball接口,重写 play( ) 方法,输出三条信息,分别为”**“,”方法内部类:” 和 “打乒乓球”
- 在测试类Test中通过匿名内部类实现接口Ball,并重写 play( )方法,输出两条信息,分别为 “**“,”匿名内部类:” 和 “打排球”
- 创建测试类Test,通过创建BallTest类及相关内部类实例,调用相关方法,依次完成相关内部类测试。运行效果参见效果图
1 2 3 4 5 6 7
| package me.feihong.ball;
public interface IBall { void play();
}
|
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
| package me.feihong.ball;
public class BallTest { public class Inner_m implements IBall {
@Override public void play() { System.out.println("成员内部类:"); System.out.println("打篮球"); } }
public void info() { class Inner_f implements IBall{
@Override public void play() { System.out.println("*******************"); System.out.println("方法内部类:"); System.out.println("打乒乓球"); } } Inner_f inner_f=new Inner_f(); inner_f.play(); }
public static void playBall(IBall ball) { ball.play(); }
}
|
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
| package me.feihong.test;
import me.feihong.ball.BallTest; import me.feihong.ball.IBall;
public class Test {
public static void main(String[] args) { BallTest.Inner_m nbl=new BallTest().new Inner_m(); nbl.play(); BallTest ffl=new BallTest(); ffl.info(); BallTest.playBall(new IBall(){ @Override public void play() { System.out.println("*******************"); System.out.println("匿名内部类"); System.out.println("打排球"); } }); }
}
|