内部类--编程练习

分别通过成员内部类、方法内部类、匿名内部类完成接口Ball,在测试类BallTest中的调用。

程序参考运行效果图如下:

任务

任务分析:

  1. 创建接口Ball
  • 包含抽象方法play( )
  1. 创建外部类BallTest
  • 定义方法 void playBall(Ball ball),调用接口中的 play( ) 方法
  1. 分别通过成员内部类、方法内部类以及匿名内部类完成接口实现
  • 在BallTest中,创建成员内部类 Inner_m 实现接口Ball,在类中重写 play( ) 方法,输出两条信息,分别为”成员内部类:”和”打篮球”
  • 在BallTest中, 创建成员方法 info() ,在方法中创建方法内部类 Inner_f 实现Ball接口,重写 play( ) 方法,输出三条信息,分别为”**“,”方法内部类:” 和 “打乒乓球”
  • 在测试类Test中通过匿名内部类实现接口Ball,并重写 play( )方法,输出两条信息,分别为 “**“,”匿名内部类:” 和 “打排球”
  1. 创建测试类Test,通过创建BallTest类及相关内部类实例,调用相关方法,依次完成相关内部类测试。运行效果参见效果图
1
2
3
4
5
6
7
package me.feihong.ball;

public interface IBall {
//创建抽象方法play
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 {
// 创建成员内部类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();
}

}
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) {
// 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("打排球");
}
});

}

}
-------------本文结束感谢您的阅读-------------