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